public class MyClass {
private static void print_bits(int n) {
System.out.println(String.format("%32s", Integer.toBinaryString(n)).replaceAll(" ", "0"));
}
private static int reverseBits(int num) {
int total_bits = (Integer.SIZE / Byte.SIZE) * 8;
int reversed_bits = 0;
for (int i = 0; i < total_bits; i++) {
if ((num & (1 << i)) != 0) {
reversed_bits |= 1 << ((total_bits - 1) - i);
}
}
return reversed_bits;
}
public static void main(String args[]) {
int num = 42;
print_bits(num);
num = reverseBits(num);
print_bits(num);
System.out.println();
num = 19;
print_bits(num);
num = reverseBits(num);
print_bits(num);
}
}
/*
run:
00000000000000000000000000101010
01010100000000000000000000000000
00000000000000000000000000010011
11001000000000000000000000000000
*/