 GeeksforGeeks App
Open App Browser
Continue

# Compute maximum of two integers in C/C++ using Bitwise Operators

Given two integers A and B, the task is to find the maximum of two numbers using Bitwise Operators.

Examples:

Input: A = 40, B = 54
Output: 54

Input: A = -1, B = -10
Output: -1

Approach: The idea is to use the Bitwise Operator as well as the Right Shift Operator to find the greatest number between two distinct numbers without using any conditional statements( if … ) and Ternary Operator(?: ). Below are the steps:

• Find the maximum value on the basis of the below expression:

z = A – B
i = (z >> 31) & 1
max = a – (i*z)

• Subtract two numbers and store it in another variable z.
• To get the sign of the number obtained after subtraction, apply Right Shift to the variable z and store it in another variable i and then perform Bitwise AND operation on the variable i with 1 to get values in 1 or 0.
• Perform the following expression to get the largest value among the two given numbers as max = (a – (i * z)).

Illustration:

A = 40, B = 54
z = (A – B) = 40 – 54 = -14
i = -1 & 1 = 1
max = a – (i * z) = (40 – (1 * -14)) = 54

Below is the implementation of the above approach:

## C++

 `// C++ program for above approach``#include ``using` `namespace` `std;` `// Function to find the largest number``int` `findMax(``int` `a, ``int` `b)``{``    ``int` `z, i, max;` `    ``// Perform the subtraction``    ``z = a - b;` `    ``// Right shift and Bitwise AND``    ``i = (z >> 31) & 1;` `    ``// Find the maximum number``    ``max = a - (i * z);` `    ``// Return the maximum value``    ``return` `max;``}` `// Driver Code``int` `main()``{``    ``int` `A = 40, B = 54;` `    ``// Function Call``    ``cout << findMax(A, B);` `    ``return` `0;``}`

## C

 `// C program for the above approach``#include ` `// Function to find the largest number``int` `findMax(``int` `a, ``int` `b)``{``    ``int` `z, i, max;` `    ``// Perform the subtraction``    ``z = a - b;` `    ``// Right shift and Bitwise AND``    ``i = (z >> 31) & 1;` `    ``// Find the maximum number``    ``max = a - (i * z);` `    ``// Return the maximum value``    ``return` `max;``}` `// Driver Code``int` `main()``{``    ``int` `A = 40, B = 54;` `    ``// Function Call``    ``printf``(``"%d"``, findMax(A, B));` `    ``return` `0;``}`

## Java

 `// Java program for above approach``import` `java.io.*;` `class` `GFG {` `  ``// Function to find the largest number``  ``public` `static` `int` `findMax(``int` `a, ``int` `b)``  ``{``    ``int` `z, i, max;` `    ``// Perform the subtraction``    ``z = a - b;` `    ``// Right shift and Bitwise AND``    ``i = (z >> ``31``) & ``1``;` `    ``// Find the maximum number``    ``max = a - (i * z);` `    ``// Return the maximum value``    ``return` `max;``  ``}` `  ``// Driver Code``  ``public` `static` `void` `main (String[] args)``  ``{``    ``int` `A = ``40``, B = ``54``;` `    ``// Function Call``    ``System.out.println(findMax(A, B));``  ``}` `}` `// This code is contributed by Shubham Singh`

## Python3

 `# Python program for the above approach` `# Function to find the largest number``def` `findmaxx(a, b):``    ` `    ``# Perform the subtraction``    ``z ``=` `a ``-` `b``    ` `    ``# Right shift and Bitwise AND``    ``i ``=` `(z >> ``31``) & ``1``    ` `    ``# Find the maxximum number``    ``maxx ``=` `a ``-` `(i ``*` `z)``    ` `    ``# Return the maxximum value``    ``return` `maxx` `# Driver Code``A ``=` `40``B ``=` `54` `# Function Call``print``(findmaxx(A, B))` `# This code is contributed by Shubham Singh`

## Javascript

 ``

Output:

`54`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up