1) Set count=0
2) Do bit wise AND with n and 1.
n& 1
let n be a7a6a5a4a3a2a1a0
1->00000001
So doing bitwise AND (refer to published article on bitwise operators)
will result in all bits 0 except the LSB which will be a0.
If a0 is 0 then the Integer has trailing zero else don’t have
Thus,
IF
n& 1 = =0
count++
ELSE
Break; //no more trailing zero since current LSB is 1
END IF-ELSE
3) Right shift n by 1
n=n>>1
4) IF n==0
Break
ELSE
REPEAT step 2, 3
5) Print
Example with Explanation:
Trailing zeroes in 12: 12 → 00001100
So first iteration:
n=12 //00001100
n & 1 =0
count=1
n=n>>1 (n=6) //00000110
So second iteration:
n=6 //00000110
n & 1 =0
count=2
n=n>>1 (n=3) //00000011
So third iteration:
n=3 //00000011
n & 1 =1
break
print count=2
No of trailing zeroes: 2
C implementation
#include <stdio.h>
int main()
{
unsigned int n;
printf("enter the integer\n");
scanf("%d",&n);
int count=0;
while(n!=0){
if(n & 1 == 1) //if current bit is 1
break; //no more trailing zero
n=n>>1; //right shift
count++; //if trailing zero, increase count
}
printf("no of trailing zero ");
//print no of trailing zero
printf("in its binary representation: %d \n",count);
return 0;
}
Output (first run)
enter the integer
12
no of trailing zero in its binary representation: 2
Output (second run)
enter the integer
13
no of trailing zero in its binary representation: 0
Pre-requisite: Input number n
Algorithm:
Example with Explanation:
Trailing zeroes in 12: 12 → 00001100
C implementation
Output (first run)
Output (second run)
need an explanation for this answer? contact us directly to get an explanation for this answer