用于无符号整数的恢复除法算法

2025年3月17日 | 阅读 3 分钟

恢复除法通常在定点小数上执行。当我们在两个数字上执行除法运算时,除法算法将为我们提供两样东西,即商和余数。该算法基于 0 < D < N 的假设。借助数字集 {0, 1},商位 q 将在恢复除法算法中形成。除法算法通常有两种类型,即快速算法和慢速算法。Goldschmidt 和 Newton-Raphson 是快速除法算法的类型,而 STR 算法、恢复算法、非执行算法和非恢复算法是慢速除法算法的类型。

在本节中,我们将借助无符号整数执行恢复算法。我们使用恢复一词是因为我们知道寄存器 A 的值将在每次迭代后恢复。我们还将尝试使用流程图解决此问题并应用位运算。

Restoring Division Algorithm for Unsigned Integer

在这里,寄存器 Q 用于包含商,寄存器 A 用于包含余数。这里,除数将被加载到寄存器 M 中,n 位被除数将被加载到寄存器 Q 中。0 是寄存器的起始值。这些类型的寄存器的值在迭代时被恢复。这就是它被称为恢复的原因。

Restoring Division Algorithm for Unsigned Integer

现在我们将学习恢复除法算法的一些步骤,如下所示

步骤 1: 在此步骤中,相应的值将被初始化到寄存器中,即寄存器 A 将包含值 0,寄存器 M 将包含除数,寄存器 Q 将包含被除数,N 用于指定被除数中的位数。

步骤 2: 在此步骤中,寄存器 A 和寄存器 Q 将被视为一个单元,并且两个寄存器的值都将左移。

步骤 3: 之后,寄存器 M 的值将从寄存器 A 中减去。减法的结果将存储在寄存器 A 中。

步骤 4: 现在,检查寄存器 A 的最高有效位。如果寄存器 A 的此位为 0,则寄存器 Q 的最低有效位将设置为值 1。如果 A 的最高有效位为 1,则寄存器 Q 的最低有效位将设置为值 0,并恢复 A 的值,这意味着它将恢复减去 M 之前的寄存器 A 的值。

步骤 5: 之后,N 的值将递减。这里 n 用作计数器。

步骤 6: 现在,如果 N 的值为 0,我们将中断循环。否则,我们必须再次转到步骤 2。

步骤 7: 这是最后一步。在此步骤中,商包含在寄存器 Q 中,余数包含在寄存器 A 中。

例如

在这个例子中,我们将执行一个除法恢复算法。


NMAQ操作
400011000001011初始化
0001100001011_左移 AQ
0001111110011_A = A - M
00011000010110Q[0] = 0 并且恢复 A
30001100010110_左移 AQ
0001111111110_A = A - M
00011000101100Q[0] = 0
20001100101100_左移 AQ
0001100010100_A = A - M
00011000101001Q[0] = 1
10001100101001_左移 AQ
0001100010001_A = A - M
00011000100011Q[0] = 1

因此,我们不应忘记恢复 A 的最高有效位的值,即 1。因此,寄存器 A 包含余数 2,寄存器 Q 包含商 3。


下一个主题调试机器级程序