# Find average of two numbers using bit operation

• Difficulty Level : Hard
• Last Updated : 30 May, 2022

Given two integers x and y, the task is to find the average of these numbers i.e. (x + y) / 2 using bit operations. Note that this method will give result as floor value of the calculated average.
Examples:

Input: x = 2, y = 4
Output:
(2 + 4) / 2 = 3
Input: x = 10, y = 9
Output:

Approach: Average of two numbers x and y can be calculated using bit operations as:

(x & y) + ((x ^ y) >> 1)

where & is bitwise AND, ^ is bitwise XOR and >> 1 is right shift by 1 bit.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the average``// of x and y using bit operations``int` `getAverage(``int` `x, ``int` `y)``{``    ``// Calculate the average``    ``// Floor value of (x + y) / 2``    ``int` `avg = (x & y) + ((x ^ y) >> 1);` `    ``return` `avg;``}` `// Driver code``int` `main()``{``    ``int` `x = 10, y = 9;` `    ``cout << getAverage(x, y);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG {` `    ``// Function to return the average``    ``// of x and y using bit operations``    ``static` `int` `getAverage(``int` `x, ``int` `y)``    ``{` `        ``// Calculate the average``        ``// Floor value of (x + y) / 2``        ``int` `avg = (x & y) + ((x ^ y) >> ``1``);` `        ``return` `avg;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `x = ``10``, y = ``9``;` `        ``System.out.print(getAverage(x, y));``    ``}``}`

## Python

 `# Python 3 implementation of the approach` `# Function to return the average``# of x and y using bit operations``def` `getAverage(x, y):` `    ``# Calculate the average``    ``# Floor value of (x + y) / 2``    ``avg ``=` `(x & y) ``+` `((x ^ y) >> ``1``);``    ` `    ``return` `avg` `# Driver code``x ``=` `10``y ``=` `9``print``(getAverage(x, y))`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `    ``// Function to return the average``    ``// of x and y using bit operations``    ``static` `int` `getAverage(``int` `x, ``int` `y)``    ``{` `        ``// Calculate the average``        ``// Floor value of (x + y) / 2``        ``int` `avg = (x & y) + ((x ^ y) >> 1);` `        ``return` `avg;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `x = 10, y = 9;` `        ``Console.WriteLine(getAverage(x, y));``    ``}``}` `// This code is contributed by AnkitRai01`

## PHP

 `> 1);` `    ``return` `\$avg``;``}` `// Driver code``    ``\$x` `= 10;``    ``\$y` `= 9;` `    ``echo` `getAverage(``\$x``, ``\$y``);` `// This code is contributed by ajit.``?>`

## Javascript

 ``

Output:

`9`

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up