#include <stdio.h>
void print_bits(unsigned int n, unsigned int size) {
for (unsigned int i = 1 << (size - 1); i > 0; i = i / 2) {
(n & i) ? printf("1") : printf("0");
}
}
unsigned int reverseBits(unsigned int num) {
unsigned int total_bits = sizeof(num) * 8;
unsigned int reversed_bits = 0;
for (unsigned int i = 0; i < total_bits; i++) {
if ((num & (1 << i))) {
reversed_bits |= 1 << ((total_bits - 1) - i);
}
}
return reversed_bits;
}
int main()
{
unsigned int num = 42;
print_bits(num, 32);
printf("\n");
num = reverseBits(num);
print_bits(num, 32);
printf("\n\n");
num = 19;
print_bits(num, 32);
printf("\n");
num = reverseBits(num);
print_bits(num, 32);
return 0;
}
/*
run:
00000000000000000000000000101010
01010100000000000000000000000000
00000000000000000000000000010011
11001000000000000000000000000000
*/