非恢复除法算法

时间:2012-08-26 20:51:04

标签: algorithm binary division bits addition

有没有人知道使用非恢复分区划分无符号二进制整数的步骤?

很难在网上找到任何好的消息来源。

A = 101110B = 010111

我们如何在非恢复分区中找到A divided by B?寄存器在每一步中都是什么样的?

谢谢!

2 个答案:

答案 0 :(得分:20)

(我的回答有点迟到了。但我希望它对将来的访问者有用)

非恢复除法的算法如下图所示:

enter image description here

在这个问题中,红利(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

enter image description here

希望表格中的所有步骤都清楚!!!

答案 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指定为商。