有没有人知道使用非恢复分区划分无符号二进制整数的步骤?
很难在网上找到任何好的消息来源。
即A = 101110
和B = 010111
我们如何在非恢复分区中找到A divided by B
?寄存器在每一步中都是什么样的?
谢谢!
答案 0 :(得分:20)
(我的回答有点迟到了。但我希望它对将来的访问者有用)
非恢复除法的算法如下图所示:
在这个问题中,红利(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) denotes shift left AQ by one position leaving Q0 blank
。
同样,Q0位置的方形符号表示it is to be calculated later
希望表格中的所有步骤都清楚!!!
答案 1 :(得分:1)
1)将寄存器A的值设为0(N位)
2)将寄存器M的值设为除数(N位)
3)将寄存器Q的值设置为Dividend(N位)
4)用Q {A,Q}连接A
5)重复以下“N”次(这里N是除数中的位数):
如果A的符号位等于0,则
移位A和Q左移1位和
从A中减去 M,
否则A和Q组合左移1位,添加 M组合到A
现在,如果A的符号位等于0,则将Q [0]设置为1,否则将Q [0]设置为0
6)最后,如果A的符号位等于1,则将M加到A.
7)将A指定为余数,将Q指定为商。