Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.43 KB | None | 0 0
  1. // returns index of most significant '1' bit in a number
  2. pub fn msb_idx(b: u64) -> u8 {
  3.     let mut idx: u8 = 0;
  4.     let mut tmp: u64 = b;
  5.  
  6.     while tmp != 0 {
  7.         tmp >>= 1;
  8.         idx += 1;
  9.     }
  10.     idx - 1
  11. }
  12.  
  13. // returns index of the least significant '1' bit in a number
  14. pub fn lsb_idx(b: u64) -> u8 {
  15.     let lsb: u64 = b ^ (b & (b - 1));  // isolate the LSB
  16.     msb_idx(lsb)  // the isolated LSB is now also the MSB
  17. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement