Four bit adder: Difference between revisions
Content deleted Content added
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. |