使用布斯算法进行乘法,乘数 -57 将被重新编码为
(A) 0 -1 0 0 1 0 0 -1
(B) 1 1 0 0 0 1 1 1
(C) 0 -1 0 0 1 0 0 0
(D) 0 1 0 0 -1 0 0 1答案:(一)
说明: 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
因此,-57 的带符号表示(2 的补码)中的给定数字
= 2's complement of (00111001) = 11000110+1 = 11000111
= append 0 into LSB of (11000111) = 110001110
Now Booth's code (add 1 bit at a time, from LSB to MSB):
= 11, 10, 00, 00, 01, 11, 11, 10 = 0 -1 0 0 1 0 0 -1
替代方式——
您可以在给定选项中计算十进制值:
(A) 0 -1 0 0 1 0 0 -1 = 0*(2^6) -1*(2^6) + 0*(2^5) + 0*(2^4) + 1*(2) ^3) + 0*(2^2) + 0*(2^1) -1*(2^0) = -2^6 + 2^3 – 2^0 = -64 +8 -1 = -57
(B) 1 1 0 0 0 1 1 1 = 2^7 + 2^6 + 2^2 2^1 + 2^0 = 199
(C) 0 -1 0 0 1 0 0 0 = -2^6 + 2^3 = -56
(D) 0 1 0 0 -1 0 0 1 = 2^6 – 2^3 + 2^0 = 57
所以,选项(A)是正确的。
这个问题的测验