public static (Word sum, Bit carryOut) Add(Word a, Word b, Bit cIn) { var r0 = BitAdder.Add(a.b0, b.b0, cIn); var r1 = BitAdder.Add(a.b1, b.b1, r0.carryOut); var r2 = BitAdder.Add(a.b2, b.b2, r1.carryOut); var r3 = BitAdder.Add(a.b3, b.b3, r2.carryOut); return(new Word(r0.sum, r1.sum, r2.sum, r3.sum), r3.carryOut); }
public void CarryOut() { Assert.False(BitAdder.CarryOut(0, 0, 0)); Assert.False(BitAdder.CarryOut(0, 0, 1)); Assert.True(BitAdder.CarryOut(0, 1, 1)); Assert.False(BitAdder.CarryOut(0, 1, 0)); Assert.True(BitAdder.CarryOut(1, 1, 0)); Assert.True(BitAdder.CarryOut(1, 1, 1)); Assert.True(BitAdder.CarryOut(1, 0, 1)); Assert.False(BitAdder.CarryOut(1, 0, 0)); }
public void Sum() { Assert.False(BitAdder.Sum(0, 0, 0)); Assert.True(BitAdder.Sum(0, 0, 1)); Assert.False(BitAdder.Sum(0, 1, 1)); Assert.True(BitAdder.Sum(0, 1, 0)); Assert.False(BitAdder.Sum(1, 1, 0)); Assert.True(BitAdder.Sum(1, 1, 1)); Assert.False(BitAdder.Sum(1, 0, 1)); Assert.True(BitAdder.Sum(1, 0, 0)); }