Four bit adder: Difference between revisions

Content added Content deleted
Line 981: Line 981:
: (4bitsAdder T T T T NIL NIL NIL T)
: (4bitsAdder T T T T NIL NIL NIL T)
-> (T NIL NIL NIL NIL)</pre>
-> (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}}==
=={{header|PureBasic}}==
<lang PureBasic>;Because no representation for a solitary bit is present, bits are stored as bytes.
<lang PureBasic>;Because no representation for a solitary bit is present, bits are stored as bytes.