Open-Source Internship opportunity by OpenGenus for programmers. Apply now.
In this article, we have designed and implemented a C Program to count trailing zeros using bitwise operators only. This will involve AND and Left Shift bitwise operation.
Table of contents:
- Problem Statement
 - Approach 1
 - C Program to count trailing zeros using bitwise operator
 
Learn:
Problem Statement
The problem is to count the number of trailing zeroes in a binary format representation of a given Integer. The challenge is to use only bitwise operations.
If the integer is 160, then binary representation will be 0b10100000. The number of trailing zeroes will be 5.
160 = 0b10100000
In this problem, we need not convert the number to binary format.
Implement the approach in C Programming Language.
Approach 1
The key idea to count trailing zeros using bitwise operations are:
- Check the lowest significant bit and if it is 0, increase count by 1.
 - Check next bit from left to right (increasing significance).
 - If you encounter a bit to be 1, end the process and return the count.
 
To check the lowest significant bit, you can do AND with 1.
N & 1
Similarly:
- 1: Lowest significant bit is set to 1 only
 - 1 << 1: 2nd lowest significant bit is set to 1 only
 - 1 << 2: 3rd lowest significant bit is set to 1 only
 - and so on.
 
Only, AND and Left Shift bitwise operations are used in this approach.
C Program to count trailing zeros using bitwise operator
Following is the complete C Program to count trailing zeros using bitwise operator:
// Part of iq.opengenus.org
#include<stdio.h>
int countTrailingZeros(int num)
{
   int mask = 1;
   int count = 0;
   while (mask != 0) {
      if ((num & mask) == 0) {
          ++ count;
      }
      else {
          break;
      }
      mask = mask << 1;
   }
   return count;
}
 
int main() {
   int integer_number = 160;
   printf("Number of trailing zeros in %d in binary format is: %d", 
          integer_number, countTrailingZeros(integer_number));
   return 0;
}
Output:
Number of trailing zeros in 160 in binary format is: 5
With this article at OpenGenus, you must have the complete idea of how to implement a C Program to count trailing zeros using bitwise operator.