public class BitReverse {
// Reverse bits using string operations (clear and idiomatic in Java)
static int reverseBits(int n) {
String bin = String.format("%32s", Integer.toBinaryString(n))
.replace(' ', '0');
String reversed = new StringBuilder(bin).reverse().toString();
return (int) Long.parseLong(reversed, 2);
}
// Format bits into 8‑bit groups
static String bits(int n) {
String bin = String.format("%32s", Integer.toBinaryString(n))
.replace(' ', '0');
return bin.replaceAll("(.{8})", "$1 ").trim();
}
public static void main(String[] args) {
int a = 19;
int b = 3;
int ra = reverseBits(a);
int rb = reverseBits(b);
System.out.println("Original 19: " + bits(a));
System.out.println("Reversed 19: " + bits(ra));
System.out.println();
System.out.println("Original 3: " + bits(b));
System.out.println("Reversed 3: " + bits(rb));
}
}
/*
run:
Original 19: 00000000 00000000 00000000 00010011
Reversed 19: 11001000 00000000 00000000 00000000
Original 3: 00000000 00000000 00000000 00000011
Reversed 3: 11000000 00000000 00000000 00000000
*/