用Booth算法计算4x3的4位补码乘法运算,写出每
编辑: admin 2017-01-03
-
4
以基2-Booth算法来说,它是对本位及相邻低位的值进行编码.N位的乘法运算需要N次编码.2个N位的数补码相乘,输出结果位数为2N.比如,两个乘数分别是4位补码表示, 0111(7), 1101(3) ——其中,{R0,R1}代表输出结果,R1为被乘数,R2为乘数
R0 R1 P
0000 0111 0 初始
0011 0111 1 R0<=R0-R2
0001 1011 1 右移(第一次循环)
0000 1101 1 右移(第二次循环)
0000 0110 1 右移(第三次循环)
1101 0110 1 R0<=R0+R2
1110 1011 1 右移(第四次循环)
结果为 (1110 1011)=(-21)
类似问题
类似问题1:booth算法辅助位是根据什么?
第一次是0
以后是乘数的最后一位.
如乘数是1011,
辅助位依次为0,1,1,0,1
也就是依次做sub,nop,add,sub运算
类似问题2:用C语言或者C++写一个二进制补码的乘法的函数,请问有好的算法思路吗.例如知道两个数a的补码是001011010b的补码是100000011 怎么才能得到a*b的补码呢
计算机本身存储的就是补码
直接把a*b的结果用二进制方式输出就是了
类似问题3:用BOOth算法计算7x (-4),要求写每一步运算过程及运算结果.[数学科目]
初始:0000 0111 (0)
1:0100 0111 (0)
0010 0011 (1)
2:0001 0001 (1)
3:0000 1000 (1)
4:1110 0100 (0)
(1110 0100)=(-28) 别忘了给分啊!
类似问题4:补码booth算法中移位的问题!(3) x=+1010,y=-0101,演算过程是这样的[x]补=01010,[y]补=11011,则 [x×y]补 =1111001110 就是第三行10110进行下一步计算要移位是吧但怎么就移成11011了呢?这个是根据什么规则[数学科目]
我日!等了半天 这么个破问题也没人解决 幸好我自己弄懂了
首先右移的时候把部分积R0和乘数RI 看为一个整体
然后看R0最高位是什么 是0就在后面加个0 然后整体往右移 要是1就加1
得到的就是结果!
类似问题5:用Booth算法计算7x(-3)的4位补码乘法运算,要求写出每一步运算过程及运算结果[数学科目]
110 :1101 + 1 = 0011
011 :1101