The adder: half → full
Adding binary by hand needs carries. Now we build the circuit that does it — first a cell for one column, then the cell that chains into any width.
Built from first principles.
Before you start
What you need first
- Binary addition — column sums and carries (
1+1 = 10). - The design method — spec → truth table → simplify → circuit.
- XOR/AND gates — the two gates an adder is built from.
What you'll be able to do
- Derive the half adder (two inputs) and its two gates.
- Derive the full adder (with carry-in) and its truth table.
- Read the FA block symbol — the cell every wide adder uses.
Adding one column: the half adder
Add two single bits A and B. The answer can be 0, 1, or 2 — and 2
needs two output bits: a Sum (this column) and a
Carry (into the next). Run the design method:
| A | B | Sum | Cout |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Read each output column straight off the table:
So the half adder is literally two gates sharing the same two inputs:
Adding with a carry-in: the full adder
A real column has three bits to add: A, B, and the
carry-in Cin from the column below. Three inputs,
same two outputs (Sum, Cout):
| A | B | Cin | Sum | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Simplifying each column gives:
Notice A ⊕ B and A·B appear again — exactly a half adder's two
outputs. So a full adder is just two half adders plus one OR gate: the first
HA adds A and B; the second adds that sum to Cin; the OR merges the two carries.
Wrap it in one block
Once the full adder is designed and tested, we stop drawing its insides and treat it as a single labelled box — the FA block. Three inputs in, two outputs out:
Its behaviour, in one line: it outputs the 2-bit sum of its three input bits —
A + B + Cin, giving Sum (low bit) and Cout (high bit).
Full adder with A = 1, B = 1, Cin = 1
The three input bits sum to 1 + 1 + 1 = 3 = 11₂ — so we expect Sum = 1,
Cout = 1. Check with the expressions:
Cout Sum = 11₂ = 3
— exactly the count of 1s on the inputs. That's all an adder cell does.✏️ Try it yourself
(a) Write the half-adder outputs Sum and Cout. (b) What extra input does a full adder have that a half adder lacks? (c) A full adder is built from how many half adders, plus what one gate? (d) Compute Sum and Cout for A=1, B=0, Cin=1.
Recap — the whole topic on one screen
| Block | Inputs | Sum | Cout |
|---|---|---|---|
| Half adder | A, B | A ⊕ B | A · B |
| Full adder | A, B, Cin | A ⊕ B ⊕ Cin | A·B + Cin·(A⊕B) |