- 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