CMPE 325 Computer
Architecture II
• At each step we multiply the multiplicand by a single digit from the multiplier.
– In binary, we multiply by either 1 or 0 (much simpler than decimal).
Cem Ergün
Eastern Mediterranean University
• Keep a running sum instead of storing and adding all the partial products at the end.
Multiplication & Division Algorithms
Cem Ergun
Multiplication
Implementing Multiplication
• Long-hand multiplication (12 × 9 = 108)
1 1 0 0 = 12ten
× 1 0 0 1 = 9ten
----------------------1 1 0 0
0 0 0 0 0
0 0 0 0 0 0
+ 1 1 0 0 0 0 0
----------------------1 1 0 1 1 0 0 = 108ten
2
Multiplication & Division Algorithms
• Several different ways to implement
• Things to note about previous method
(n bit Multiplicand)
(m bit Multiplier)
– At each step we either copied or set the value to 0
– LSBs of the product don’t change once computed
⇒ Can form product by shifting and adding
• Solution #1
– Shift multiplicand left at each step (same as adding 0’s)
– Shift multiplier right so we can always consider the 0’th bit
(n + m bit Product)
• The result is a number that is n + m - 1 bits long
Cem Ergun
3
Multiplication & Division Algorithms
Solution #1:
Operations
• Multiplication without sign (12 × 9 = 108)
(n bit Multiplicand)
(m bit Multiplier)
Multiplicand
0 0 0 0
1 1 1
Multiplier
0 0 0 0
1 1
Multiplier0 = 1
1. Test
Multiplier0
Multiplier0 = 0
1a. Add multiplicand to product and place the result in Product register
2. Shift the Multiplicand register left 1 bit
3. Shift the Multiplier register right 1 bit
1 0 0 1
Product
4
Multiplication & Division Algorithms
Start
Solution #1
1 1 0 0 = 12ten
× 1 0 0 1 = 9ten
----------------------1 1 0 0
0 0 0 0 0
0 0 0 0 0 0
+ 1 1 0 0 0 0 0
----------------------1 1 0 1 1 0 0 = 108ten
Cem Ergun
1 1 0 0
0 0
32nd repetition?
No: < 32 repetitions
Yes: 32