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:3

(2 + 4) / 2 = 3

Input:x = 10, y = 9

Output:9

**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 <bits/stdc++.h> ` `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; ` `} ` |

*chevron_right*

*filter_none*

## 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)); ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

## 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)) ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP implementation of the approach ` ` ` `// Function to return the average ` `// of x and y using bit operations ` `function` `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; ` ` ` ` ` `echo` `getAverage(` `$x` `, ` `$y` `); ` ` ` `// This code is contributed by ajit. ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

9

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.