fn round_to_nearest_power_of_2(n: u32) -> u32 {
if n == 0 {
return 0;
}
// Compute the previous power of 2 using leading_zeros
let prev_power = 1 << (31 - n.leading_zeros());
// Compute the next power of 2
let next_power = prev_power << 1;
// Return the one closest to n
if n - prev_power < next_power - n {
prev_power
} else {
next_power
}
}
fn main() {
let num = 37;
println!("Nearest power of 2: {}", round_to_nearest_power_of_2(num));
}
/*
run:
Nearest power of 2: 32
*/