定点数补码乘法运算
补码乘法的理论推导
根据上述理论推导,我们可以得知,\([x]_{补} * [y]_{补} \neq [x*y]_{补}\),在计算补码的乘法时,我们应该减去乘数的符号位乘以其对应的位权乘以被乘数
原码的符号位是不参与运算的,而补码的符号位是参与运算的,并且在最后是减去乘数的符号位乘以其对应的位权乘以被乘数
还有一点与原码乘法不同的是,补码乘法中的部分积的加减都应该遵循补码运算的规则,例如应该进行符号扩展而不是零扩展
Booth算法
我们可以认为Booth是一种"差分优化",在原来的运算方案中,一连串的1中,每个1都需要被运算一次。而使用了Booth算法之后就只需要在开头和结尾运算一次
运算电路实现
手算模拟
这里对于“算数右移”的描述,我们可以直接认为,符号位也参与了移位,然后向高位补了一个符号位。补码的算数左移和右移,符号位都是发生移动的。