p14m

Partial Products

The intermediate terms generated during binary multiplication.

Problem

What are partial products and why do they matter?

How it works

Multiplying A × B works the same in binary as long multiplication in decimal. Each bit of B is ANDed with every bit of A, producing a row of partial products shifted by the bit position.

For example, 1011 × 1101:
    1011 (A)
  × 1101 (B)
  ──────
    1011 (B[0]=1 → A«0)
   0000  (B[1]=0 → skip)
  1011   (B[2]=1 → A«2)
 1011    (B[3]=1 → A«3)

Each row is a partial product: the multiplicand ANDed with one multiplier bit, shifted left. An n×n multiplication produces n partial products that must be summed to get the final 2n-bit product.

The 3:2 counter (used in Wallace Trees) is just a full adder repurposed: it takes 3 partial product bits at the same column position and reduces them to 2 output bits (sum + carry into the next column). This is why FAs appear everywhere in multiplier reduction.
Key insightAll multiplier architectures solve the same problem: how to sum n partial products efficiently. The choice is sequential (one at a time), array (row by row), or tree (all at once).