(5)用快速乘法器实现快速除法运算
按下式完成M/D:
式中Fi( 0 ≤ i ≤ r )为各次递乘因子,递乘几次后,可以使D*F0*F1*F2*…*Fr→1,则商应为:
M * F0 * F1 * F2*…* Fr
若M和D为规格化正的二进制小数代码时,可写成:
D=1-δ (0 <δ≤ 1/2)
那么可取Fi 的值如下:
F0 = 1+δ
D0 = D×F0 = (1-δ)(1+δ)=1-δ2
F1 = 1+δ2
D1 =(1-δ2)(1+δ2)=1-δ4
可见当i增加时, Di将很快趋近于1,其误差为δ2i+1
。
实际上求得Fi 的过程很简单,它应为 - Di的补码, 即2 - Di( 0 ≤
i ≤ r ) ,
请见下例:
M=0.1000 D=0.1011, F=1.0101
则

则 F1=1.0010

则可以认为本Q≈0.1100,若算得更精确些,可以采用双倍字长乘运算,误差更小,求得的商为Q=1011。
|