Advertisement
Guest User

Untitled

a guest
Jan 12th, 2023
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.40 KB | None | 0 0
  1. fn lzc<T: std::ops::Shl::<Output = T> + From::<u8> + std::cmp::PartialEq + std::ops::BitAnd<Output = T> + Copy>(mut x: T) -> u8 {
  2.     let n: u8 = (size_of::<T>() * 8) as u8;
  3.     let first_bit: T = T::from(1_u8) << T::from(n - 1);
  4.    
  5.     if x == T::from(0_u8) {
  6.         return n;
  7.     }
  8.  
  9.     let mut cnt: u8 = 0;
  10.    
  11.     while (x & first_bit) == T::from(0_u8) {
  12.         cnt += 1;
  13.        
  14.         x = x << T::from(1_u8);
  15.     }
  16.  
  17.     return cnt;
  18. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement