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

除法算法在我们除法两个数时提供一个商和一个余数。它们通常有两种类型 慢算法和快算法 慢除法算法包括恢复、非恢复、不良恢复、SRT算法,而在快速除法算法下则是牛顿-拉斐逊和戈德施密特算法。

null

在本文中,我们将执行无符号整数的恢复算法。恢复项是由于寄存器A的值在每次迭代后恢复。

图片[1]-无符号整数的除法恢复算法-yiteyi-C++库

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

图片[2]-无符号整数的除法恢复算法-yiteyi-C++库

让我们选择所涉及的步骤:

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

例如:

Perform Division Restoring Algorithm 
Dividend = 11
Divisor  = 3
n M A. Q 活动
4. 00011 00000 1011 初始化
00011 00001 011_ 左移AQ
00011 11110 011_ A=A-M
00011 00001 0110 Q[0]=0并恢复
3. 00011 00010 110_ 左移AQ
00011 11111 110_ A=A-M
00011 00010 1100 Q[0]=0
2. 00011 00101 100_ 左移AQ
00011 00010 100_ A=A-M
00011 00010 1001 Q[0]=1
1. 00011 00101 001_ 左移AQ
00011 00010 001_ A=A-M
00011 00010 0011 Q[0]=1

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

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享