Four bit adder: Difference between revisions

Line 981:
: (4bitsAdder T T T T NIL NIL NIL T)
-> (T NIL NIL NIL NIL)</pre>
 
=={{header|PL/I}}==
<lang PL/I>
/* A 4-bit adder. */
TEST: PROCEDURE OPTIONS (MAIN);
DECLARE CARRY BIT (1) ALIGNED;
DECLARE CARRY_IN BIT (1) STATIC INITIAL ('0'B) ALIGNED;
declare (m, n, sum)(4) bit(1) aligned;
declare i fixed binary;
 
get edit (m, n) (b(1));
put edit (m, ' + ', n, ' = ') (4 b, a, 4 b, a);
 
do i = 4 to 1 by -1;
call full_adder (carry_in, m(i), n(i), sum(i), carry);
carry_in = carry;
end;
put edit (sum) (b);
 
HALF_ADDER: PROCEDURE (IN1, IN2, SUM, CARRY);
DECLARE (IN1, IN2, SUM, CARRY) BIT (1) ALIGNED;
 
SUM = ^( (IN1 & IN2) | ( ^IN1 & ^IN2) );
CARRY = IN1 & IN2;
 
END HALF_ADDER;
 
FULL_ADDER: PROCEDURE (CARRY_IN, IN1, IN2, SUM, CARRY);
DECLARE (CARRY_IN, IN1, IN2, SUM, CARRY) BIT (1) ALIGNED;
DECLARE (SUM2, CARRY2) BIT (1) ALIGNED;
 
CALL HALF_ADDER (CARRY_IN, IN1, SUM, CARRY);
CALL HALF_ADDER (SUM, IN2, SUM2, CARRY2);
SUM = SUM2;
CARRY = CARRY | CARRY2;
END FULL_ADDER;
 
END TEST;
</lang>
 
=={{header|PureBasic}}==
<lang PureBasic>;Because no representation for a solitary bit is present, bits are stored as bytes.
Anonymous user