【发布时间】:2021-03-13 01:36:28
【问题描述】:
有谁知道使用非恢复除法来除无符号二进制整数的步骤?
在网上很难找到任何好的资源。
即如果A = 101110 和B = 010111
我们如何在非恢复分区中找到A divided by B?每个步骤中的寄存器是什么样的?
谢谢!
【问题讨论】:
-
@RaymondChen,错误的结果
标签: algorithm binary division bits addition
有谁知道使用非恢复除法来除无符号二进制整数的步骤?
在网上很难找到任何好的资源。
即如果A = 101110 和B = 010111
我们如何在非恢复分区中找到A divided by B?每个步骤中的寄存器是什么样的?
谢谢!
【问题讨论】:
标签: algorithm binary division bits addition
(我的回答有点晚了。但我希望它对未来的访客有用)
非恢复除法算法如下图:
在这个问题中,Dividend (A) = 101110,即 46,Divisor (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) 将寄存器 A 的值设为 0(N 位)
2) 将寄存器 M 的值设置为除数(N 位)
3) 将寄存器 Q 的值设为 Dividend (N bits)
4) 连接 A 和 Q {A,Q}
5)重复以下“N”次(这里N是除数中的位数):
如果A的符号位等于0,
将 A 和 Q 组合左移 1 位和
从 A 中减去 M,
否则将 A 和 Q 组合左移 1 位并将 M 添加 M 到 A
现在如果 A 的符号位等于 0,则将 Q[0] 设置为 1,否则将 Q[0] 设置为 0
6) 最后,如果 A 的符号位等于 1,则将 M 添加到 A。
7) 指定 A 为余数,Q 为商。
【讨论】:
[putting into words] useful for [more than one purpose] 去过那里,做到了。不是我的反对票。)