Skip to main content

vyre_reference/dual_impls/bitwise/not/
reference_b.rs

1//! Bit-by-bit NOT reference for `primitive.bitwise.not`.
2
3/// Compute NOT by flipping each bit independently.
4pub fn reference(input: &[u8]) -> Vec<u8> {
5    if input.len() < 4 {
6        return vec![0; 4];
7    }
8
9    let mut output = [0_u8; 4];
10    for bit_index in 0..32 {
11        let byte = input[bit_index / 8];
12        let mask = 1_u8 << (bit_index % 8);
13        let bit_set = byte & mask != 0;
14        if !bit_set {
15            output[bit_index / 8] |= 1 << (bit_index % 8);
16        }
17    }
18    output.to_vec()
19}