Find average of two numbers using bit operation
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; } |
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
<?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. ?> |
Javascript
<script> // javascript 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 var avg = (x & y) + ((x ^ y) >> 1); return avg; } // Driver code var x = 10, y = 9; document.write(getAverage(x, y)); // This code is contributed by Rajput-Ji </script> |
Output:
9
Time Complexity: O(1)
Auxiliary Space: O(1)
Please Login to comment...