- Write a program in C to find whether a number is power of two or not in one line.
- How to find whether a number is power of two or not.
- Any number who is a power of two(let it be N) have only one bit set in it's binary representation.
For Example: 4 = 100, 8 = 1000, 16 = 10000, 32 = 100000 etc.
- If we subtract 1 from any power of 2 number then, the set bit becomes unset and all the bits in right side of the originally set bit becomes 1.
For Example: 4-1 = 011, 8-1 = 0111, 16-1 = 01111, 32-1=011111
- Now, If bitwise and(&) of N and N-1 returns ) means N is a power of 2.
For Example, 4 & 3 = 100 & 011 = 000
C program to check whether a number is power of two using bitwise operator
#include<stdio.h>
#include<math.h>
int main() {
int num;
printf("Enter an integer\n");
scanf("%d", &num);
if(num && ((num & (num-1)) == 0)){
printf("%d is power of 2", num);
} else {
printf("%d is not a power of 2", num);
}
return 0;
}
Output
Enter an integer
16
16 is power of 2
Enter an integer
15
16 is not a power of 2