Write a program to set, reset and complement bit of an entered number using macro.
#include<stdio.h> #define CLEAR_BIT_AT_POSITION(num,bit) num=num &~(1<<bit) #define SET_BIT_AT_POSITION(num,bit) num=num | (1<<bit) #define COMPLEMENT_BIT_AT_POSITION(num,bit) num=num ^ (1<<bit) void Print_Num_inBinary(int); int main() { int num,bit; 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)) { //CLEAR_BIT_AT_POSITION(num,bit); //SET_BIT_AT_POSITION(num,bit); COMPLEMENT_BIT_AT_POSITION(num,bit); } else { printf("\nInvalid Bit Position\n"); } Print_Num_inBinary(num); 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"); }
Output
Enter a Number = 15 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00001111 Enter a bit(Position) to check = 3 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00000111
Enter a Number = 7 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00000111 Enter a bit(Position) to check = 3 32 Bit Binary Representation of a Number 00000000 00000000 00000000 00001111