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

`<?php` `// PHP program to find the number` `// with more leading zeroes.` `// Function to compare the no.` `// of leading zeros` `function` `LeadingZeros(` `$x` `, ` `$y` `)` `{` ` ` `// if both have same no. of` ` ` `// leading zeros` ` ` `if` `((` `$x` `^ ` `$y` `) <= (` `$x` `& ` `$y` `))` ` ` `echo` `"\nEqual"` `;` ` ` `// if y has more leading zeros` ` ` `else` `if` `((` `$x` `& (~` `$y` `)) > ` `$y` `)` ` ` `echo` `$y` `;` ` ` `else` ` ` `echo` `$x` `;` `}` `// Driver Code` `$x` `= 10;` `$y` `= 16;` `LeadingZeros(` `$x` `, ` `$y` `);` ` ` `// This code is contributed by ajit` `?>` |

## Javascript

`<script>` `// Javascript program to find the number with more` `// leading zeroes.` `// Function to compare the no. of leading zeros` `function` `LeadingZeros(x, y)` `{` ` ` `// if both have same no. of leading zeros` ` ` `if` `((x ^ y) <= (x & y))` ` ` `document.write(` `"<br>Equal"` `);` ` ` `// if y has more leading zeros` ` ` `else` `if` `((x & (~y)) > y)` ` ` `document.write(y);` ` ` `else` ` ` `document.write(x);` `}` `// Main Function` ` ` `let x = 10, y = 16;` ` ` `LeadingZeros(x, y);` `</script>` |

**Output:**

10

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

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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend live classes with industry experts, please refer **DSA Live Classes**