Write a program to check status of a bit in a given number.
#include<stdio.h> void Print_Num_inBinary(int); int Check_Bit_Status_By_RightShift(int,int); int Check_Bit_Status_By_LeftShift(int,int); enum Bit_Status{IS_CLEAR,IS_SET}; int main() { int num,bit,status; printf("Enter a Number = "); scanf("%d",&num); Print_Num_inBinary(num); printf("Enter a bit(Position) to check = "); scanf("%d",&bit); if((bit >=0) && (bit <= (sizeof(int)*8-1))) { //status = Check_Bit_Status_By_LeftShift(num,bit); status = Check_Bit_Status_By_LeftShift(num,bit); if(status == IS_SET) printf("Bit %d in Number %d is set\n",bit,num); else printf("Bit %d in Number %d is clear\n",bit,num); } else { printf("\nInvalid Bit Positon\n"); } return 0; } void Print_Num_inBinary(int n) { int i; printf("\n%d Bit Binary Representation of a Number\n",sizeof(int)*8); for(i = ((sizeof(int)*8)-1);i >= 0;i--) { printf("%d",n >> i & 1); if(!(i%8)) printf(" "); } printf("\n\n"); } int Check_Bit_Status_By_RightShift(int n,int b) { if((n >> b && 1) == 1) return IS_SET; else return IS_CLEAR; } int Check_Bit_Status_By_LeftShift(int n,int b) { if((n & 1 << b) == 0) return IS_CLEAR; else return IS_SET; }
Output
Enter a Number = 5 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00000101 Enter a bit(Position) to check = 0 Bit 0 in Number 5 is set
Enter a Number = 5 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00000101 Enter a bit(Position) to check = 1 Bit 1 in Number 5 is clear