📜  COA |展位的乘法算法

📅  最后修改于: 2020-12-29 11:34:00             🧑  作者: Mango

展位的乘法算法

展位算法是一种乘法算法,使我们可以将两个有符号的二进制整数分别乘以2的补码。它还可用于加快乘法过程的性能。这也是非常有效的。它适用于乘法器中的字符串位0,不需要额外的位,只需将最右边的字符串位和1的字符串移至乘法器位权重2 k到权重2 m (可以认为是2 k + 1-2 m)中

以下是Booth算法的图形表示:

在上面的流程图中,最初, ACQ n + 1位设置为0,并且SC是一个序列计数器,代表设置了n的总位,该位数等于乘法器中的位数。有BR表示被乘数位, QR表示乘数位。此后,我们遇到了乘法器的两位,即Q n和Q n +1 ,其中Qn代表QR的最后一位,而Q n +1代表Qn的递增位1。假设乘法器的两位相等至10;这意味着我们必须从累加器AC的部分积中减去乘数,然后执行算术移位运算(ashr)。如果两个乘数等于01,则意味着我们需要对累加器AC中的乘积与乘积进行加法运算,然后执行算术移位运算( ashr ),其中包括Q n +1 。布斯算法中使用算术移位运算将AC和QR位右移一位,并使AC中的符号位保持不变。序列计数器不断递减,直到重复计算循环为止,等于位数(n)。

研究展位算法

  • 将被乘数和乘数二进制位分别设置为M和Q。
  • 最初,我们将AC和Q n + 1寄存器的值设置为0。
  • SC代表乘数位数(Q),它是一个序列计数器,连续递减直到等于位数(n)或达到0。
  • Qn表示Q的最后一位,而Q n + 1表示Qn的递增位为1。
  • 在展位算法的每个循环中,将对以下参数检查Q n和Q n +1位,如下所示:
    1. 当两个位Q n和Q n + 1为00或11时,我们仅对部分积AC执行算术右移运算(ashr)。 Qn和Q n + 1的位增加1位。
    2. 如果Q n和Q n +1的位显示为01,则被乘数(M)将添加到AC(累加器寄存器)中。之后,我们将AC和QR位右移1。
    3. 如果Q n和Q n +1的位显示为10,则将从AC(累加器寄存器)中减去被乘数位(M)。之后,我们将AC和QR位右移1。
  • 该操作将持续进行,直到在展位算法中达到n-1位为止。
  • 乘法二进制位的结果将存储在AC和QR寄存器中。

布斯算法中使用两种方法:

1. RSC(右移通告)

它将二进制数的最右边的位移位,然后将其添加到二进制位的开头。

2. RSA(右移算术)

它将两个二进制位相加,然后将结果右移1位。

示例:0100 + 0110 => 1010,将二进制数相加后,将每个位向右移动1,然后将结果的第一位放在新位的开头。

示例:使用Booth的乘法算法将两个数字7和3相乘。

安斯。这里我们有两个数字7和3。首先,我们需要将7和3转换为二进制数,例如7 =(0111)和3 =(0011)。现在将7(在二进制0111中)设置为被乘数(M),将3(在二进制0011中)设置为乘数(Q)。 SC(Sequence Count)表示位数,这里我们有4位,因此将SC设置为4。此外,它还显示了展位算法的迭代周期数,然后循环运行SC = SC-1次。

Qn Qn + 1 M = (0111)
M’ + 1 = (1001) & Operation
AC Q Qn + 1 SC
1 0 Initial 0000 0011 0 4
Subtract (M’ + 1) 1001
1001
Perform Arithmetic Right Shift operations (ashr) 1100 1001 1 3
1 1 Perform Arithmetic Right Shift operations (ashr) 1110 0100 1 2
0 1 Addition (A + M) 0111
0101 0100
Perform Arithmetic right shift operation 0010 1010 0 1
0 0 Perform Arithmetic right shift operation 0001 0101 0 0

布斯乘法算法的数值示例是7 x 3 = 21,二进制表示形式21是10101。在这里,我们得到二进制00010101的结果。现在将其转换为十进制,如(000010101) 10 = 2 * 4 + 2 * 3 + 2 * 2 + 2 * 1 + 2 * 0 => 21。

示例:使用Booth的乘法算法将两个数字23和-9相乘。

在这里,M = 23 =(010111),Q = -9 =(110111)

Qn             Qn + 1 M = 0 1 0 1 1 1
M’ + 1 = 1 0 1 0 0 1
AC Q Qn + 1             SC
Initially 000000 110111 0             6
1             0 Subtract M 101001
101001
Perform Arithmetic right shift operation 110100 111011 1             5
1             1 Perform Arithmetic right shift operation 111010 011101 1             4
1             1 Perform Arithmetic right shift operation 111101 001110 1             3
0              1 Addition (A + M) 010111
010100
Perform Arithmetic right shift operation 001010 000111 0             2
1             0 Subtract M 101001
110011
Perform Arithmetic right shift operation 111001 100011 1             1
1             1 Perform Arithmetic right shift operation 111100 110001 1             0

Q n +1 = 1,表示输出为负。

因此,23 * -9 = 2的补码111100110001 => (00001100111)