# Comparing leading zeros in binary representations of two numbers

• Last Updated : 28 Apr, 2021

Given two integer numbers x and y. Compare and print which one of them has more leading zeros using Bitwise operation. If both the no. have the same no. of leading zeros, print “Equal”.
Note:- A leading zero is any 0 digit that comes before the first nonzero digit in the binary notation of the number.
Examples:

```Input : 10, 16
Output :10
Explanation: If we represent the no.s using 8 bit only then
Binary(10) = 00001010
Binary(16) = 00010000
Clearly, 10 has 4 leading zeros and 16 has 3 leading zeros

Input : 10, 12
Output : Equal
Binary(10) = 00001010
Binary(12) = 00001100
Both have equal no. of leading zeros.```

Solution 1: The Naive approach is to first find the binary representation of the numbers and then count the no. of leading zeros.
Solution 2: Find largest power of twos smaller than given numbers, and compare these powers of twos to decide answer.
Solution 3: An efficient approach is to bitwise XOR and AND operators.

Case 1: If both have same no. of leading zeros then (x^y) <= (x & y) because same number of leading 0s would cause a 1 at higher position in x & y.
Case 2 : If we do negation of y and do bitwise AND with x, we get a one at higher position than in y when y has more number of leading 0s.
Case 3: Else x has more leading zeros

## C++

 `// CPP program to find the number with more``// leading zeroes.``#include ``using` `namespace` `std;` `// Function to compare the no. of leading zeros``void` `LeadingZeros(``int` `x, ``int` `y)``{``    ``// if both have same no. of leading zeros``    ``if` `((x ^ y) <= (x & y))``        ``cout << ``"\nEqual"``;` `    ``// if y has more leading zeros``    ``else` `if` `((x & (~y)) > y)``        ``cout << y;` `    ``else``        ``cout << x;``}` `// Main Function``int` `main()``{``    ``int` `x = 10, y = 16;``    ``LeadingZeros(x, y);``    ``return` `0;``}`

## Java

 `// Java program to find the number``// with more leading zeroes.``class` `GFG``{``// Function to compare the no.``// of leading zeros``static` `void` `LeadingZeros(``int` `x, ``int` `y)``{``    ``// if both have same no. of``    ``// leading zeros``    ``if` `((x ^ y) <= (x & y))``        ``System.out.print(``"\nEqual"``);` `    ``// if y has more leading zeros``    ``else` `if` `((x & (~y)) > y)``        ``System.out.print(y);` `    ``else``        ``System.out.print(x);``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``int` `x = ``10``, y = ``16``;``    ``LeadingZeros(x, y);``}``}` `// This code is contributed by Smitha`

## Python3

 `# Python 3 program to find the number``# with more leading zeroes.` `# Function to compare the no. of``# leading zeros``def` `LeadingZeros(x, y):``    ` `    ``# if both have same no. of``    ``# leading zeros``    ``if` `((x ^ y) <``=` `(x & y)):``        ``print``(``"Equal"``)` `    ``# if y has more leading zeros``    ``elif` `((x & (~y)) > y) :``        ``print``(y)` `    ``else``:``        ``print``(x)` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``x ``=` `10``    ``y ``=` `16``    ``LeadingZeros(x, y)` `# This code is contributed``# by Surendra_Gangwar`

## C#

 `// C# program to find the number``// with more leading zeroes.``using` `System;` `class` `GFG``{``// Function to compare the no.``// of leading zeros``static` `void` `LeadingZeros(``int` `x, ``int` `y)``{``    ``// if both have same no. of``    ``// leading zeros``    ``if` `((x ^ y) <= (x & y))``        ``Console.WriteLine(``"\nEqual"``);` `    ``// if y has more leading zeros``    ``else` `if` `((x & (~y)) > y)``        ``Console.WriteLine(y);` `    ``else``        ``Console.WriteLine(x);``}` `// Driver Code``static` `public` `void` `Main ()``{``    ``int` `x = 10, y = 16;``    ``LeadingZeros(x, y);``}``}` `// This code is contributed by ajit`

## PHP

 ` ``\$y``)``        ``echo` `\$y``;` `    ``else``        ``echo` `\$x``;``}` `// Driver Code``\$x` `= 10;``\$y` `= 16;``LeadingZeros(``\$x``, ``\$y``);``    ` `// This code is contributed by ajit``?>`

## Javascript

 ``

Output:

`10`

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

My Personal Notes arrow_drop_up