Write a program to check whether entered number i power of two or not.
#include<stdio.h> int Check_Power_of_2(int); int Check_Power_of_2_by_BitCount(int); enum Num_Status{IS_POWER_OF_2,IS_NOT_POWER_OF_2}; int main() { int num,status; printf("Enter a Number = "); scanf("%d",&num); //status = Check_Power_of_2(num); status = Check_Power_of_2_by_BitCount(num); if(status == IS_POWER_OF_2) printf("%d is a power of 2\n",num); else printf("%d is not a power of 2\n",num); return 0; } int Check_Power_of_2(int n) { if(!(n & (n-1))) return IS_POWER_OF_2; else return IS_NOT_POWER_OF_2; } int Check_Power_of_2_by_BitCount(int n) { int i,SetBitCount = 0; for(i=((sizeof(int)*8)-1);i>=0;i--) { if(n >> i & 1) SetBitCount++; } if(SetBitCount == 1) return IS_POWER_OF_2; else return IS_NOT_POWER_OF_2; }
Output
Enter a Number = 64 64 is a power of 2
Enter a Number = 31 31 is not a power of 2