Write a program to swap nibble(4 bits) of a number using macro.
#include<stdio.h> int i,j; #define SWAP_NIBBLE(x) for(i=0,j=28;i<4;i++,j++)\ {\ if(((x) >> i & 1) != ((x) >> j & 1))\ {\ x = x ^ 1 << i;\ x = x ^ 1 << j;\ }\ } void Print_Num_inBinary(int); int main() { int num; printf("Enter a Number = "); scanf("%d",&num); Print_Num_inBinary(num); SWAP_NIBBLE(num); printf("Nibbles are swapped."); 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 Nibbles are swapped. 32 Bit Binary Representation of a Number 11110000 00000000 00000000 00000000