ready_set_boole/src/adder.rs

16 lines
341 B
Rust

mod tests;
pub fn adder(a: u32, b: u32) -> u32 {
let mut result: u32 = 0;
let mut carriage: u32 = 0;
for i in 0..32 {
let a_bit = a >> i & 1;
let b_bit = b >> i & 1;
result = result | (a_bit ^ b_bit ^ carriage) << i;
carriage = (a_bit & b_bit) | ((a_bit ^ b_bit) & carriage)
}
result
}