// // four bit adder - uses FullAdder // test the case 5+3 with Cin 0 and 1 // public class FourBitAdder { public static void main (String[] args) { static final boolean[] A={true,false,true,false}; // 5 in binary static final boolean[] B={true,true,false,false}; // 3 in binaryCin static final boolean[] Cin={false,true}; // two runs FA4class FA4 = new FA4class(); for (int i=0; i<2; i++) { FA4.compute (A, B, Cin[i]); System.out.println ("\n5+3 with carry-in " + Cin[i] + " is"); for (int i=0; i<4; i++) System.out.println ("\t" + FA4.Sum[i]); System.out.println ("\t" + FA4.Cout); } } class FAclass { boolean Sum, Cout; void compute (boolean A, boolean B, boolean Cin) { Sum = (A ^ B) ^ Cin; Cout = (A & B) | (A & Cin) | (B & Cin); } } class FA4class { boolean[] Sum = new boolean[4]; boolean Cout; boolean[] InternalCarry = new boolean[5]; FAclass[] FA = new FAclass[4]; FA4class () { for (int i=0; i<4; i++) FA[i] = new FAclass(); } void compute (boolean[] A, boolean[] B, boolean Cin) { InternalCarry[0] = Cin; for (int i=0; i<4; i++) { FA[i].compute (A[i], B[i], InternalCarry[i]); Sum[i] = FA[i].Sum; InternalCarry[i+1] = FA[i].Cout; } Cout = InternalCarry[4]; } } }