•十进制科学计数法的加法例子
1.123 × 10^5 + 2.560 ×10^
其计算过程为:
1.123 ×10^5 + 2.560 ×10^2 = 1.123 ×10^5 + 0.002560 ×10^5
=(1.123 + 0.00256) ×10^5
= 1.12556 ×10^5
=1.126 ×10^5
进行尾数加减运算前,必须“对阶”!最后还要考虑舍入
计算机内部的二进制运算也一样!
•“对阶”操作:目的是使两数阶码相等
–小阶向大阶看齐,阶小的那个数的尾数右移,右移位数等于两个阶码差的绝对值
–IEEE 754尾数右移时,要将隐含的“1”移到小数部分,高位补0,移出的低位保留到特定的“附加位”上
基本要点
(假定:Xm、Ym分别是X和Y的尾数, Xe和Ye 分别是X和Y的阶码 )
(1) 求阶差:∆e=Ye – Xe (若Ye > Xe,则结果的阶码为Ye)
(2) 对阶:将Xm右移∆e位,尾数变为 Xm*2Xe-Ye(保留右移部分附加位)
(3) 尾数加减: Xm*2Xe-Ye ± Ym
(4) 规格化:
当尾数高位为0,则需左规:尾数左移一次,阶码减1,直到MSB为1或阶码为00000000(-126,非规格化数)
每次阶码减1后要判断阶码是否下溢(比最小可表示的阶码还要小)
当尾数最高位有进位,需右规:尾数右移一次,阶码加1,直到MSB为1
每次阶码加1后要判断阶码是否上溢(比最大可表示的阶码还要大)
阶码溢出异常处理:阶码上溢,则结果溢出;阶码下溢到无法用非规格化数表示,则结果为0
(5)如果尾数比规定位数长(有附加位),则需考虑舍入(有多种舍入方式)
(6)若运算结果尾数是0,则需要将阶码也置0。为什么?
尾数为0说明结果应该为0(阶码和尾数为全0)。