有没有人知道使用非恢复除法(non-restoring division)分割无符号二进制整数的步骤?
在网上很难找到好的资料。
例如,如果 A = 101110
和 B = 010111
我们如何在非恢复除法中找到 A 除以 B
?每个步骤中寄存器看起来像什么?
谢谢!
我的答复有点晚,但我希望对以后的访问者有用。
非恢复除法算法如下图所示:
在这个问题中,被除数(A)= 101110,即46,除数(B)= 010111,即23。
初始化:
Set Register A = Dividend = 000000
Set Register Q = Dividend = 101110
( So AQ = 000000 101110 , Q0 = LSB of Q = 0 )
Set M = Divisor = 010111, M' = 2's complement of M = 101001
Set Count = 6, since 6 digits operation is being done here.
接下来我们开始算法,我在下面的表格中展示了:
在表格中,SHL(AQ) 表示将 AQ 左移一位,保留 Q0 为空
。
同样地,Q0 位置上的正方形符号表示 稍后将进行计算
。
希望所有步骤都可以从表格中清晰地理解!
1)将寄存器A的值设置为0(N位)
2)将寄存器M的值设置为除数(N位)
3)将寄存器Q的值设置为被除数(N位)
4)连接A和Q {A,Q}
5)重复以下“N”次(这里N是除数中的位数):
如果A的符号位等于0,
则将A和Q组合向左移动1位并从A中减去M,
否则将A和Q组合向左移动1位并从A中加上M
现在,如果A的符号位等于0,则将Q [0]设置为1,否则将Q [0]设置为0
6)最后,如果A的符号位等于1,则将M添加到A中。
7)将A分配为余数,将Q分配为商。
表达出来
对于 多个目的
有用,我已经做过了。不是我的反对票。) - greybeard