dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn bit_reverse(mut n: usize) -> usize {
    const MASKS: [usize; 6] = [
        0xaaaaaaaaaaaaaaaa,
        0xcccccccccccccccc,
        0xf0f0f0f0f0f0f0f0,
        0xff00ff00ff00ff00,
        0xffff0000ffff0000,
        0xffffffff00000000,
    ];

    for (i, &m) in MASKS.iter().enumerate() {
        let d = 1 << i;

        n = ((n & m) >> d) | ((n & !m) << d);
    }

    n
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        assert_eq!(bit_reverse(0xffffffff0000f000), 0x000f0000ffffffff);
    }
}