📜  无符号整数的恢复除法算法

📅  最后修改于: 2021-06-28 14:43:44             🧑  作者: Mango

当我们将两个数相除时,除法算法提供了商和余数。它们一般分为慢速算法和快速算法两种。慢速除法算法是还原,非还原,非性能还原,SRT算法,并且很快出现了Newton-Raphson和Goldschmidt。

在本文中,将为无符号整数执行恢复算法。恢复项是由于以下事实:每次迭代后都会恢复寄存器A的值。

此处,寄存器Q包含商,而寄存器A包含余数。在这里,n位除数被加载到Q中,除数被加载到M中。寄存器的值最初保持为0,这是其值在迭代过程中被恢复的寄存器,因此其被称为恢复。

让我们选择涉及的步骤:

  • 步骤1:首先用相应的值初始化寄存器(Q =股息,M =除数,A = 0,n =股息位数)
  • 步骤2:然后将寄存器A和Q的内容左移,就好像它们是一个单元一样
  • 步骤3:然后从A中减去寄存器M的内容,并将结果存储在A中
  • 步骤4:然后检查A的最高有效位是否为0,将Q的最低有效位设置为1,否则,如果它为1,则将Q的最低有效位设置为0并恢复寄存器A的值即用M减去之前的A值
  • 步骤5:递减计数器n的值
  • 步骤6:如果n的值变为零,则进入循环,否则从步骤2开始重复
  • 步骤7:最后,寄存器Q包含商,A包含余数

例子:

Perform Division Restoring Algorithm 
Dividend = 11
Divisor  = 3
n M A Q Operation
4 00011 00000 1011 initialize
00011 00001 011_ shift left AQ
00011 11110 011_ A=A-M
00011 00001 0110 Q[0]=0 And restore A
3 00011 00010 110_ shift left AQ
00011 11111 110_ A=A-M
00011 00010 1100 Q[0]=0
2 00011 00101 100_ shift left AQ
00011 00010 100_ A=A-M
00011 00010 1001 Q[0]=1
1 00011 00101 001_ shift left AQ
00011 00010 001_ A=A-M
00011 00010 0011 Q[0]=1

记住要恢复A的最高有效位的值为1。因为寄存器Q包含商,即3,而寄存器A包含余数2。