#include <iostream>
#include <bitset>
void print_bits(unsigned int n) {
std::bitset<32> bits(n);
std::cout << bits << '\n';
}
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);
num = reverseBits(num);
print_bits(num);
std::cout << "\n";
num = 19;
print_bits(num);
num = reverseBits(num);
print_bits(num);
return 0;
}
/*
run:
00000000000000000000000000101010
01010100000000000000000000000000
00000000000000000000000000010011
11001000000000000000000000000000
*/