Given an integer N, the task is to find the number of trailing zeroes in the binary representation of the given number.
Examples:
Input: N = 12
Output: 2
Explanation:
The binary representation of the number 13 is “1100”.
Therefore, there are two trailing zeros in the 12.Input: N = -56
Output: 3
Explanation:
The binary representation of the number -56 is “001000”.
Therefore, there are 3 trailing zeros present in -56.
Approach: Follow the steps to solve the problem
- The idea is to use the observation that after calculating XOR of N with N – 1, all the set bit of N left to the rightmost set bit, i.e LSB set bit disappears and the rightmost set bit of N becomes the leftmost set bit of N ^ (N – 1).
- Print the count of bits of a number (N ^ (N – 1)) decremented by 1.
Below is the implementation of the above approach:
C++
// C++ implementation // of the above approach #include <bits/stdc++.h> using namespace std; // Function to print count of // trailing zeroes present in // binary representation of N int countTrailingZeroes( int N) { // Count set bits in (N ^ (N - 1)) int res = log2(N ^ (N - 1)); // If res < 0, return 0 return res >= 0 ? res : 0; } // Driver Code int main() { int N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N cout << countTrailingZeroes(N); return 0; } |
Java
// Java implementation // of the above approach import java.io.*; class GFG { // Function to print count of // trailing zeroes present in // binary representation of N public static int countTrailingZeroes( int N) { // Stores XOR of N and (N-1) int res = N ^ (N - 1 ); // Return count of set bits in res return ( int )(Math.log(temp) / Math.log( 2 )); } // Driver Code public static void main(String[] args) { int N = 12 ; // Function call to print the count // of trailing zeroes in the binary // representation of N System.out.println( countTrailingZeroes(N)); } } |
Python3
# Python3 implementation # of the above approach from math import log2 # Function to print count of # trailing zeroes present in # binary representation of N def countTrailingZeroes(N): # Count set bits in (N ^ (N - 1)) res = int (log2(N ^ (N - 1 ))) # If res < 0, return 0 return res if res > = 0 else 0 # Driver Code if __name__ = = '__main__' : N = 12 # Function call to print the count # of trailing zeroes in the binary # representation of N print (countTrailingZeroes(N)) # This code is contributed by mohit kumar 29. |
C#
// C# implementation // of the above approach using System; public class GFG{ // Function to print count of // trailing zeroes present in // binary representation of N public static int countTrailingZeroes( int N) { // Stores XOR of N and (N-1) int res = ( int )Math.Log(N ^ (N - 1), 2.0); // Return count of set bits in res if (res >= 0) return res; else return 0; } // Driver Code static public void Main () { int N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N Console.WriteLine( countTrailingZeroes(N)); } } // This code is contributed by Dharanendra L V. |
Javascript
<script> // Javascript implementation // of the above approach // Function to print count of // trailing zeroes present in // binary representation of N function countTrailingZeroes(N) { // Count set bits in (N ^ (N - 1)) let res = parseInt(Math.log(N ^ (N - 1)) / Math.log(2)); // If res < 0, return 0 return res >= 0 ? res : 0; } // Driver Code let N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N document.write(countTrailingZeroes(N)); // This code is contributed by souravmahato348 </script> |
2
Time Complexity: O(log(N))
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!