14 lines
269 B
Rust
14 lines
269 B
Rust
|
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
|
||
|
}
|
||
|
|