除法算法在我们除法两个数时提供一个商和一个余数。它们通常有两种类型 慢算法和快算法 慢除法算法包括恢复、非恢复、不良恢复、SRT算法,而在快速除法算法下则是牛顿-拉斐逊和戈德施密特算法。
null
在本文中,我们将执行无符号整数的恢复算法。恢复项是由于寄存器A的值在每次迭代后恢复。
这里,寄存器Q包含商,寄存器A包含余数。在这里,n位被除数加载在Q中,除数加载在M中。寄存器的值最初保持为0,这是在迭代过程中恢复其值的寄存器,因此它被命名为Restoring。
让我们选择所涉及的步骤:
- 第一步: 首先用相应的值初始化寄存器(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