dsalgo/least_significant_bit_from_lsb_number.rs
1pub fn lsb(n: u64) -> usize {
2 assert!(n > 0);
3
4 let n = n as isize;
5
6 (n & -n).trailing_zeros() as usize
7}
8
9#[cfg(test)]
10
11mod tests {
12
13 use super::*;
14
15 #[test]
16
17 fn test() {
18 let cases = vec![(1, 0), (0b01010, 1)];
19
20 for (n, ans) in cases {
21 assert_eq!(lsb(n), ans);
22 }
23 }
24}