新浪博客

4.5 浮点运算及运算器
2
第4章 运算方法与运算器
4.3 定点数除法运算及实现

3
第4章 运算方法与运算器
一、原码除法算法

4
第4章 运算方法与运算器
1、手工除法算法
  • X=+0.1011,Y=-0.1101
  • X÷Y

  • 改进手工算法即可适合机器运算:
    • 计算机通过做减法测试来实现判断:结果大于等于0,表明够减,商1;结果小于0,表明不够减,商0
    • 计算机将余数左移一位,再直接与不右移的除数相减。

5
第4章 运算方法与运算器
2、原码恢复余数算法
  • 假设[X]=XS .X1 X2 ……Xn ,[Y]=YS .Y1 Y2 ……Yn ,Q是X÷Y的商,QS是商的符号,RX÷Y的余数,RS是余数的符号
  • 原码除法运算的规则是:
    • 1.QS = XS ⊕YS ,RS = XS|Q| = |X|÷|Y|-|R|÷|Y|
    • 2.余数和被除数、除数均采用双符号位初始余数为|X|
    • 3.每次用余数减去|Y|(通过加上[-|Y|]来实现),若结果的符号位为0,则,上商1,余数左移一位;若结果的符号位为1,则不够,上商0,先|Y|恢复余数,然后余数左移一位。
    • 4.循环操作步骤3共做n+1次,最后一次不左移,但若最后一次上商0则必须+|Y|恢复余数;若为定点小数除法,余数则为最后计算得到的余数右移n的值。

6
第4章 运算方法与运算器
例如: X=+0.1011,
Y= - 0.1101
用原码恢复余数算法计算X÷Y
解:[X]=0.1011
[Y]=1.1101 |X|=0.1011 |Y|=0.1101
[-|Y|]=11.0011
QS = XS ⊕YS = 1 RS = 0
[Q]=1.1101
[R]=0.00000111
7
第4章 运算方法与运算器
3、原码不恢复余数算法
  • 又称为交替:当某一次求得的差值(余数Ri)为负时,不是恢复它,而是继续求下一位商,但用上除数(+|Y|的办法来取代(-|Y|)操作,其他操作不变。
  • 其原理证明如下:(注:其证明须借用 恢复余数法 的原理,如下所示:)
    • 在恢复余数除法中,若第i-1次求商的余数为Ri-1,下一次求商的余数为Ri,则:Ri=2Ri-1|Y|
    • 如果Ri>=0,商的第i上1并执行操作:余数左移一位,再减|Y|,得Ri+1,则:Ri+1=2Ri|Y|(注:乘以2代表余数左移一位)
    • 如果Ri<0,商的第i上0并执行操作:恢复余数(+|Y|),将余数左移一位,再减|Y|,得Ri+1。其过程可用公式表示如下:
Ri+1=2(Ri+|Y|)-|Y|=2Ri+2|Y|-|Y|=2Ri+|Y|(乘以2原因同上)
红色字体的式子就是我们想要的结论:即 加减交替法 的理论依据。这些显然是建立在恢复余数法的理论基础上的。
8
第4章 运算方法与运算器
3、原码不恢复余数算法
  • 交替的规则如下:
    • 余数为正时,商上1,求下一位商的办法,是余数左移一位,再减去除数
    • 当余数为负时,商上0,求下一位商的办法,是余数左移一位,再加上除数
    • 最后一次上商为0,而又需得到正确余数,则在这最后一次仍需恢复余数

9
第4章 运算方法与运算器
例如:X=+0.1011Y=-0.1101,用原码不恢复余数算法计算X÷Y。
解:[X]=0.1011 [Y]=1.1101 |X|=0.1011 |Y|=0.1101
[-|Y|]=11.0011
QS = XS ⊕YS = 1 RS = 0
[Q]=1.1101
[R]=0.00000111
10
第4章 运算方法与运算器
二、原码除法的硬件实现
控制电路逻辑
11
第4章 运算方法与运算器
原码不恢复余数除法流程
12
第4章 运算方法与运算器
三、阵列除法器
  • 被除数X=X1 X2 X3 X4 X5 X6,除数Y=123得到的商Q=Q1Q2Q3Q0=0),R= R4 R5 R6
  • 若为定点小数,则X=0.X1 X2 X3 X4

我的更多文章

下载客户端阅读体验更佳

APP专享