mod tests; pub fn gray_code(n: u32) -> u32 { let mut result: u32 = n & 1 << 31; for i in (1..32).rev() { let n_bit = n >> i & 1; let n_right_bit = n << 1 >> i & 1; result = result | (n_bit ^ n_right_bit) << i >> 1; } result }