fn reverse_bits(n: u32) -> u32 {
let bin = format!("{:032b}", n);
let rev: String = bin.chars().rev().collect();
u32::from_str_radix(&rev, 2).unwrap()
}
fn bits(n: u32) -> String {
let bin = format!("{:032b}", n);
let chunks: Vec<&str> = bin.as_bytes()
.chunks(8)
.map(|c| std::str::from_utf8(c).unwrap())
.collect();
chunks.join(" ")
}
fn main() {
let a: u32 = 19;
let b: u32 = 3;
let ra = reverse_bits(a);
let rb = reverse_bits(b);
println!("Original 19: {}", bits(a));
println!("Reversed 19: {}", bits(ra));
println!();
println!("Original 3: {}", bits(b));
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
*/