下面给出的两个数字使用Booth的算法相乘。
被乘数:0101 1010 1110 1110
乘数:0111 0111 1011 1101
上述两个数字相乘需要多少个加法/减法?
(A) 6
(B) 8
(C) 10
(D) 12答案: (B)
说明: Booth的算法:如果number为负,则首先取给定数字的2的补码,然后将0附加到LSB。
Then, for each pair from LSB to MSB (add 1 bit at a time):
00 = 0, 01 = +1, 10 = -1, 11 = 0
Booth的算法基于乘数,该乘数已以二进制表示形式给出: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)是正确的。
这个问题的测验