Write a recursive function to reverse the bits of a number.
#include<stdio.h> void print_num_in_binary_Rec(int); void Reverse_bits_Rec(int*); int main() { int num; printf("Enter Number = "); scanf("%d",&num); print_num_in_binary_Rec(num); Reverse_bits_Rec(&num); print_num_in_binary_Rec(num); return 0; } void print_num_in_binary_Rec(int n) { int i; i = sizeof(int)*8-1; while(i>=0) { printf("%d",n >> i & 1); if(!(i%8)) printf(" "); i = i--; } printf("\n"); } void Reverse_bits_Rec(int *n) { static int i = 0,j = sizeof(int)*8-1; if(i<j) { if((*n >> i & 1) != (*n >> j & 1)) { *n = *n ^ 1 << i; *n = *n ^ 1 << j; } i++,j--; Reverse_bits_Rec(n); } }
Output
Enter Number = 15 00000000 00000000 00000000 00001111 11110000 00000000 00000000 00000000