浮点运算与二进制编码十进制表示详解
1. 浮点运算的问题与注意事项
在进行浮点运算时,会出现许多小问题。我们不能像对待实数运算那样对待浮点运算,因为有限精度运算存在不准确性,若不小心,可能会带来麻烦。如果打算使用任何语言进行浮点运算,需要研究有限精度运算对计算产生的影响。
另外,HLA 的 if 语句不支持涉及浮点操作数的布尔表达式,例如不能使用 if( x < 3.141) then... 这样的语句。
2. IEEE 浮点格式
2.1 浮点格式的起源
英特尔为 8086 微处理器引入浮点单元时,聘请了数值分析师为 8087 FPU 设计浮点格式。最终由卡恩、库南和斯通三人设计出 KCS 浮点标准,该标准被 IEEE 组织采用为 IEEE 浮点格式。
2.2 三种浮点格式
英特尔引入了三种浮点格式,以满足不同的性能和精度要求,具体如下表所示:
| 格式 | 对应类型 | 位数 | 尾数 | 指数 | 动态范围 | 精度 |
| — | — | — | — | — | — | — |
| 单精度 | C 语言的 float 类型,FORTRAN 语言的 real 类型 | 32 位 | 24 位补码尾数(隐含最高有效位为 1) | 8 位,偏移量为 127 | 约 2 ± 128 或约 10 ± 38 | 大约 6 位半 |
| 双精度 | C 语言的 double 类型,FORTRAN 语言的 double - precision 类型 | 64 位 | 53 位尾数(隐含最高有效位为 1) | 11 位,偏移量
超级会员免费看
订阅专栏 解锁全文
1399

被折叠的 条评论
为什么被折叠?



