Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.31 KB | None | 0 0
  1. #![feature(core_intrinsics)]
  2. use std::intrinsics;
  3.  
  4. fn main() {
  5. for i in 0..=16 {
  6. println!("{} -> {}", i, prev_power_of_two(i));
  7. }
  8. }
  9.  
  10. fn prev_power_of_two(x: u32) -> u32 {
  11. if x <= 1 {
  12. return x;
  13. }
  14. let z = unsafe { intrinsics::ctlz_nonzero(x) };
  15.  
  16. (u32::max_value() >> z + 1) + 1
  17. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement