Booth Multiplier Explained (With Examples)
Learn radix-2 and radix-4 Booth recoding, trace -3 × 5 step by step, and avoid signed-width errors in an iterative hardware multiplier.
TL;DR: Booth recoding rewrites runs of multiplier
1bits as signed digits. Radix-2 Booth examines the pair on each iteration:01adds the multiplicand,10subtracts it, and00or11does nothing before an arithmetic right shift. A width-safe -bit implementation sign-extends the multiplicand and uses an -bit accumulator, avoiding the special failure at the most-negative value. Radix-4 modified Booth reduces the partial-product count to about half by choosing from .
Binary multiplication can be built from shifts and additions. The challenge is not that two’s-complement operands are impossible to multiply without Booth—they are not—but that sign handling and partial-product generation must be designed correctly.
Booth’s method gives a uniform signed recoding and compresses runs of 1 bits. It is useful in two different architectures:
- an iterative multiplier, which reuses one adder across several cycles
- a parallel multiplier, which generates recoded partial products and reduces them with an adder/compressor tree
Those architectures share the recoding idea but have different latency, area, and timing.
The Run-of-Ones Identity
Consider a run of binary ones from bit through bit , where :
For example:
Ordinary unsigned shift-and-add would add four shifted copies of the multiplicand for 1111. Booth recoding represents that run with a subtraction at its low boundary and an addition at the position above its high boundary.
This does not guarantee fewer nonzero operations for every bit pattern. A long run benefits; isolated or alternating ones can provide no reduction and can increase the number of add/subtract decisions. A fixed-latency radix-2 iterative multiplier still performs iterations—the recoding changes the arithmetic action within each iteration, not automatically the cycle count.
Radix-2 Booth Recoding
Append an implicit zero below the multiplier:
At iteration , inspect the current least-significant multiplier bit and the saved previous bit :
| Accumulator action | ||
|---|---|---|
| 0 | 0 | no change |
| 0 | 1 | add |
| 1 | 0 | subtract |
| 1 | 1 | no change |
Then arithmetic-shift the combined accumulator, multiplier, and saved bit right by one position.
The pair detects boundaries:
10marks the low end of a run of ones, so subtract01marks the high end after shifting through the run, so add- equal adjacent bits are inside a constant run, so no arithmetic action is needed
The table’s bit order matters. Some texts print instead; that reverses the row labels. Always state the convention.
A Width-Safe Iterative Datapath
Let both input operands be signed -bit two’s-complement values:
- : multiplicand
- : multiplier
Use:
- : sign-extended to bits
- : an -bit accumulator, initially zero
- : the -bit multiplier register
- : one saved bit, initially zero
- an iteration counter from 0 to
For each of iterations:
- inspect
- if
01, set - if
10, set - if
00or11, leave unchanged - arithmetic-shift the concatenation right by one
After iterations, discard the redundant top sign-extension bit of . The remaining bits of concatenated with form the signed -bit product.
Why the extra accumulator bit matters
For an -bit two’s-complement number, the representable range is:
The positive magnitude of does not fit in bits. A design that precomputes -M at only bits can therefore fail when is the most-negative value. Sign-extending and using an -bit accumulator makes both and representable during the algorithm.
Worked Example:
Use 4-bit operands:
Sign-extend the multiplicand to five bits:
Initialize:
The table shows the pair and arithmetic action, followed by the state after the combined arithmetic right shift:
| Iteration | Pair | Action before shift | after shift | after shift | |
|---|---|---|---|---|---|
| initial | — | — | 00000 | 0101 | 0 |
| 1 | 10 | 00001 | 1010 | 1 | |
| 2 | 01 | 11111 | 0101 | 0 | |
| 3 | 10 | 00001 | 0010 | 1 | |
| 4 | 01 | 11111 | 0001 | 0 |
After four iterations, discard the redundant high sign bit of :
As an 8-bit two’s-complement value:
which matches .
Trace one combined shift
After the first subtraction:
Arithmetic right shift copies the accumulator sign bit into the new top position and moves every other bit one place:
The shift must act on the whole concatenated register. Shifting and independently would lose the bit transfer across their boundary.
Hardware Blocks
A reusable iterative Booth multiplier contains:
- an -bit multiplicand register or input path
- an -bit accumulator
- an -bit multiplier register plus
- an -bit adder/subtractor
- pair-decode control for
add,subtract, orhold - a combined arithmetic shifter
- an iteration counter and
busy/donecontrol
The adder is reused across all iterations, which saves area relative to a fully parallel multiplier but costs latency. Whether one iteration takes one clock or several microsteps depends on the controller and datapath.
The ALU component can supply add/subtract behavior in a teaching circuit, but confirm its width and signed overflow behavior. A shift register illustrates serial movement; the Booth datapath needs a wider combined register whose top bit is sign-filled.
Radix-4 Modified Booth
Radix-4 modified Booth examines overlapping 3-bit windows and recodes two multiplier bits per digit. Append a zero at the low end and sign-extend the multiplier at the high end as required.
For a window :
| Window | Recoded multiple |
|---|---|
000 | |
001 | |
010 | |
011 | |
100 | |
101 | |
110 | |
111 |
The available multiples are:
is a left shift, so these partial products are relatively economical to generate. For an -bit multiplier, radix-4 produces approximately recoded digits instead of radix-2 digits.
That reduction can:
- halve the iterations in an iterative radix-4 design
- reduce the number of partial-product rows in a parallel design
It does not make the complete multiplier twice as fast automatically. Recoding, sign correction, partial-product generation, reduction, routing, final addition, and pipelining all contribute to timing.
Parallel Reduction: Wallace, Dadda, and Final Adders
A high-throughput multiplier can generate partial products in parallel, reduce their columns with carry-save compressors, and finish with a carry-propagate adder.
Wallace and Dadda trees are two classic reduction schedules. Modified Booth recoding can be placed before such a tree to reduce the number of rows. The final adder might use a carry-lookahead, parallel-prefix, carry-select, or another structure selected for the target technology.
“Combinational” does not necessarily mean “one processor cycle.” A wide multiplier may be pipelined across several stages to meet a target clock period, and some processors use iterative units for area or power reasons. The architecture is an implementation choice.
Booth vs Other Multiplier Structures
| Approach | Signed operation | Partial-product or cycle count | Typical tradeoff |
|---|---|---|---|
| Basic iterative shift/add | possible with correct sign handling | commonly iterations | small datapath, straightforward control |
| Radix-2 iterative Booth | native two’s-complement recoding | iterations | uniform signed algorithm; add/subtract/skip |
| Radix-4 iterative Booth | native two’s-complement recoding | about iterations | more decode/multiple selection |
| Parallel partial-product array/tree | signed or unsigned variants | rows processed concurrently | more hardware; can be pipelined |
| Radix-4 Booth plus reduction tree | native signed recoding | about half as many initial rows | common high-performance design option |
There is no universal winner. Operand width, target cells or FPGA resources, throughput, latency, area, power, and verification effort determine the right structure.
Build It in DigiSim
For a 4-bit teaching implementation:
- Create a 5-bit accumulator from visible storage elements.
- Sign-extend the 4-bit multiplicand to 5 bits.
- Use a 5-bit add/subtract path.
- Store the 4-bit multiplier and a separate bit.
- Decode
(Q0, Q−1)into add, subtract, and hold. - Implement the arithmetic shift across the complete
{A,Q,Q−1}state. - Count exactly four iterations.
- Expose
busy,done, and the final 8-bit product.
Step through the table and compare every post-shift state. A mismatch on the first iteration usually points to reversed pair order or subtraction polarity; a mismatch after a negative accumulator shift usually points to logical rather than arithmetic shift.
Verification Checklist
For exhaustive verification of a small -bit multiplier, test all:
input pairs against a signed reference product represented at bits.
At minimum, include:
- and
- positive × positive
- positive × negative
- negative × positive
- negative × negative
- maximum positive values
- the most-negative value
- multiplier patterns
0000,1111,0101, and1010 - reset or restart while busy
Also assert:
- exactly radix-2 iterations occur
doneis emitted once per accepted operation- inputs are either latched or required to remain stable by contract
- the result is not consumed before valid
- the combined shift preserves the accumulator sign
An ideal functional simulation proves arithmetic sequencing, not the maximum hardware clock rate. Use static timing analysis after mapping the design to its target.
Continue Learning
Review two’s-complement arithmetic for sign extension and range, then compare ripple-carry addition with carry-lookahead structures.
Andrew D. Booth introduced the uniform signed method in his 1951 paper, “A Signed Binary Multiplication Technique”. The central recoding remains relevant, but a professional implementation still needs explicit widths, a defined latency contract, exhaustive signed testing, and target-specific timing analysis.

