The most direct way to build a full adder is to implement each output equation in two levels of gates:
- S = : one 3-input XOR
- Cout = : three 2-input ANDs feeding a 3-input OR, a minimal sum of products
The carry equation comes from the K-map of Σm(3, 5, 6, 7): three overlapping pairs, each including the 111 cell. Each product term says "these two inputs are both 1", so Cout = 1 when at least two of the three are 1.
Compared with the two-half-adder version:
- both use 5 gates
- the two-level version uses wider gates (a 3-input XOR and a 3-input OR)
- the two-level carry is 2 gate delays from any input; the half-adder version's carry is 3 from A or B but only 2 from C
Neither form is always better. A ripple-carry adder cares most about the carry-in to carry-out path, which is 2 gate delays in both.
| A\BC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | 0m0 | 0m1 | 1m3 | 0m2 |
| 1 | 0m4 | 1m5 | 1m7 | 1m6 |