16 lines
341 B
Rust
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
|
|
}
|
|
|