sap*_*Pro 8 hardware algorithm computer-science multiplication
是展位的乘法算法只为2个乘以负数(-3 * -4)或一正一负号(-3 * 4)?每当我使用booth算法乘以2个正数时,我得到一个错误的结果.
例如:5*4
A = 101 000 0 // binary of 5 is 101
S = 011 000 0 // 2's complement of 5 is 011
P = 000 100 0 // binary of 4 is 100
x = 3 number of bits in m
y = 3 number of bits in r
m = 5
-m = m的2的补码
r = 4
在P右移1位0 000 100之后
在P右移1位0 000 010之后
P + S = 011 001 0
右移后1位0 011 001
丢弃LSB 001100
但那就是12的二进制.应该是20(010100)
@ ruakh回答后更新
5*4 = 20
m = 0101 is 5
r = 0100 is 4
A = 0101 0000 0
S = 1010 0000 0
P = 0000 0100 0
将P右移1位:0 0000 0100
将P右移1位:0 0000 0010
P + S = 10100010右移1位:1101 0001
P + A = 1 0010 0001 here 1 is the carry generated
右移1位:110010000
离开LSB:11001000(不等于20)
你没有为你的标志处理提供足够的空间.5不是101,但是0101:它必须以a开头0,因为从开始的值1是否定的.101实际上是-3:它是2的补码011,即3,同样,4不是100,但是0100; 100是-4.所以,当你乘101的100,你实际上乘以-3由-4; 这就是为什么你得到12.