Skip to content
Related Articles

Related Articles

Find average of two numbers using bit operation
  • Last Updated : 23 May, 2019

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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


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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :