什么是计算机体系结构中的Booth乘法算法?


Booth乘法算法定义了一种可以将两个补码表示的带符号二进制数相乘的乘法算法。该算法有助于计算机体系结构的研究。

Booth算法包含连续地将两个预定值(A和S)之一添加到一个乘积(P)中,然后对乘积(P)执行向右算术移位。让我们考虑预定值为A和S,乘积为P。假设被乘数和乘数分别为m和r。设m和r的位数分别为x和y。

Booth乘法算法包含以下步骤:

步骤1 - 确定A和S的值以及P的初始值。这些值应具有等于(x + y + 1)的长度。

  • 对于A,最高有效位(MSB)填充为m的值,其余(y+1)位填充为零。
  • 对于S,最高有效位(MSB)填充为补码表示的(-m)的值,其余(y + 1)位填充为零。
  • 对于P,x位的最高有效位填充为零。在这个值的右边,附加r的值。然后,最低有效位(LSB)填充为零。

步骤2 - 确定P的最低有效位(LSBs)。

  • 如果它们是01,则求P + A的值,忽略任何溢出或进位。
  • 如果它们是10,则求P + S的值,忽略任何溢出或进位。
  • 如果它们是00,则在下一步中直接使用P。
  • 如果它们是11,则在下一步中直接使用P。

步骤3 - 将步骤2中获得的值算术右移一位。P现在被赋予新值。

步骤4 - 对y次重复步骤2和步骤3。步骤5:从P中丢弃LSB,得到m和r的乘积。

示例 - 求3 x (-4)的积,其中m = 3,r = -4,x = 4,y = 4。

A = 00110000

S = 11010000

P = 00001000

由于y = 4,循环必须执行四次。

P = 00001000

这里,最后两位是00。

因此,执行算术右移后,P = 00000100。

P = 00000100

这里,最后两位是00。

因此,执行算术右移后,P = 00000010。

P = 00000010

这里,最后两位是10。

因此,P = P + S,即11010010。

执行算术右移后,P = 11101001。

P = 11101001

这里,最后两位是01。

因此,P = P + A,即00110001 + 11101001 = 00011010。

执行算术右移后,P = 00001101。

从P中丢弃LSB后,乘积是11110100。

更新于:2021年7月27日

6000+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告