Booth's multiplication algorithm
Encyclopedia : B : BO : BOO : Booth's multiplication algorithm
Booth's multiplication algorithm will multiply two signed numbers in two's complement notation.
Procedure
If x is the count of bits of the multiplicand, and y is the count of bits of the multiplier :
- Draw a grid of three lines, each with squares for x + y + 1 bits. Label the lines respectively A (add), S (subtract), and P (product).
- In two's complement notation, fill the first x bits of each line with :
- * A: the multiplicand
- * S: the negative of the multiplicand
- * P: zeroes
- Fill the next y bits of each line with :
- * A: zeroes
- * S: zeroes
- * P: the multiplier
- Fill the last bit of each line with a zero.
- Do both of these steps |y| (the Absolute Value of y) times :
- # If the last two bits in the product are...
- #* 00 or 11: do nothing.
- #* 01: P = P + A. Ignore any overflow.
- #* 10: P = P + S. Ignore any overflow.
- # Arithmetically shift the product right one position.
- Drop the last bit from the product for the final result.
Example
Find 3 × -4:
- A = 0011 0000 0
- S = 1101 0000 0
- P = 0000 1100 0
- Perform the loop four times :
- * P = 0000 1100 0. The last two bits are 00.
- * P = 0000 0110 0. A right shift.
- * P = 0000 0110 0. The last two bits are 00.
- * P = 0000 0011 0. A right shift.
- * P = 0000 0011 0. The last two bits are 10.
- * P = 1101 0011 0. P = P + S.
- * P = 1110 1001 1. A right shift.
- * P = 1110 1001 1. The last two bits are 11.
- * P = 1111 0100 1. A right shift.
- The product is 1111 0100, which is -12.
Why does Booth's algorithm work ?
Consider a positive multiplier consisting of a block of 1s surrounded by 0s. For example, 00111110. The product is given by :- [ M \times \,^ 0 \; 0 \; 1 \; 1 \; 1 \; 1 \; 1 \; 0 \,^ = M \times (2^5 + 2^4 + 2^3 + 2^2 + 2^1) = M \times 62 ]
- [ M \times \,^ 0 \; 1 \; 0 \; 0\; 0\; 0 \mbox \; 0 \,^ = M \times (2^6 - 2^1) = M \times 62 ]
- [ M \times \,^ 0 \; 0 \; 1 \; 1 \; 1 \; 0 \; 1 \; 0 \,^ = M \times (2^5 + 2^4 + 2^3 + 2^1) = M \times 58 ]
- [ M \times \,^ 0 \; 1 \; 0 \; 0 \mbox \; 1 \mbox \; 0 \,^ = M \times (2^6 - 2^3 + 2^2 - 2^1) = M \times 58 ]
History
The algorithm was invented by Andrew D. Booth in 1951 while doing research on crystallography at Birkbeck College in Bloomsbury, London. Booth used desk calculators that were faster at shifting than adding and created the algorithm to increase their speed. Booth's algorithm is of interest in the study of computer architecture.See also
References
- Collin, Andrew. [http://www.cs.man.ac.uk./CCS/res/res05.htm#e Andrew Booth's Computers at Birkbec
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
