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}