浮点数

IEEE754

编码

根据IEEE754对于浮点数的定义,单精度浮点数的真值一般表示为:

N=(1)s2e1271.fN=(-1)^s*2^{e-127}*1.f

其中数字符 ss 为1位, 阶码编码 ee 为8位(含1位阶符),尾数编码 ff 为23位。

浮点数的加减运算

一般有下列五步

计算示例

已知X和Y都是IEEE754标准格式的浮点数。求X+Y和X-Y,结果仍用IEEE754表示。

X=0,10010010,00110110100000000000000X=0,10010010,00110110100000000000000
Y=0,10001110,10000100000000000000000Y=0,10001110,10000100000000000000000

对阶

[X阶数Y阶数]=[X阶数][Y阶数][X_{阶数}-Y_{阶数}]_补=[X_{阶数}]_移-[Y_{阶数}]_移

由此可得到X的阶数比Y的阶数大4。

尾数加减

对阶后X和Y的尾数分别为

X尾数=1.00110110100000000000000X_{尾数}=1.00110110100000000000000
Y尾数=0.00011000010000000000000Y_{尾数}=0.00011000010000000000000

由此可以得出

X+Y=0,10010010,00110110100000000000000X+Y=0,10010010,00110110100000000000000
XY=0,10001110,10000100000000000000000X-Y=0,10001110,10000100000000000000000

浮点数的上溢和下溢处理

浮点数有上溢区下溢区之分,当浮点数的阶码大于最大阶码时,称为==上溢==,此时机器停止运算,进行溢出中断处理;如果阶码小于最小的阶码时,称为==下溢==, 此时溢出的数值非常小,直接强制将浮点数的尾数置为0,可以继续执行运算。