什么是计算机体系结构中的 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 的 MSB 用零填充。在该值的右侧,附加了 r 的值。然后,LSB 用零填充。

步骤 2 - 确定 P 的 LSB。

  • 如果它们是 01,则找到 P+A 的值,并忽略溢出或进位(如果有)。

  • 如果它们是 10,则找到 P + S 的值,并忽略溢出或进位(如果有)。

  • 如果它们是 00,则在下一步中直接使用 P。

  • 如果它们是 11,则在下一步中直接使用 P。

步骤 3 - 在第二步中获得的值在算术上向右移动一位。P 现在被赋予了新的值。

Step 4 - Step 2 和 Step 3 重复 y 次。第 5 步:从 P 中去掉 LSB,得到 m 和 r 的乘积。

示例- 找到 3 x (-4) 的乘积,其中 m = 3,r = -4,x = 4 和 y = -4。

A = 001100001

S = 110100000

P = 000011000

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

P = 000011000

这里,最后两位是 00。

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

P = 000001100

这里,最后两位是 00。

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

P = 000000110

这里,最后两位是 10。

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

执行算术右移后 P = 111010011。

P = 111010011

这里,最后两位是 11。

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

从 P 去掉 LSB 后的乘积为 11110100。

11110100 是 -12 的二进制表示。