8

有谁知道使用非恢复除法划分无符号二进制整数的步骤?

在网上很难找到任何好的资源。

即如果A = 101110B = 010111

我们如何找到A divided by B不可恢复的除法?每个步骤中的寄存器是什么样的?

谢谢!

4

2 回答 2

21

(我的回答有点晚了。但我希望它对未来的访客有用)

下图给出了非恢复除法的算法:

在此处输入图像描述

在本题中,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

在此处输入图像描述

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

于 2013-02-05T16:30:23.140 回答
1

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,
  else 将 A 和 Q 组合左移 1 位并将M 添加到 A
  现在如果 A 的符号位等于 0,则将 Q[0] 设置为 1,否则将 Q[0] 设置为 0
6) 最后如果 A 的符号位等于 1 然后将 M 加到 A。
7) 将 A 赋值为余数,将 Q 赋值为商。

于 2018-03-05T17:18:21.803 回答