下面给出的两个数字使用布斯算法相乘。
被乘数:0101 1010 1110 1110
乘数:0111 0111 1011 1101
以上两个数相乘需要多少加减法?
(一) 6
(乙) 8
(三) 10
(四) 12答案:(乙)
说明: Booth 算法:如果数字为负,先取给定数字的 2 的补码,然后在 LSB 中附加 0。
Then, for each pair from LSB to MSB (add 1 bit at a time):
00 = 0, 01 = +1, 10 = -1, 11 = 0
Booth 的算法基于已经以二进制表示形式给出的Multiplier:0111 0111 1011 1101
= Now, append 0 into LSB of (0111 0111 1011 1101) = 0111 0111 1011 1101 0
Now Booth's code (add 1 bit at a time, from LSB to MSB):
= 01, 11, 11, 10, 01, 11, 11, 11, 10, 01, 11, 11, 11, 10, 01, 10
= +1 0 0 -1 +1 0 0 0 -1 +1 0 0 0 -1 +1 -1
因此,需要4次减法和4次加法,总共需要8次加法/减法。
所以,选项(B)是正确的。
这个问题的测验