案例库 · 工程与运营 · 技术决策 · 1985-1991
IEEE 754 固定了精确舍入,使得同一程序在任何机器上产生相同的位
IEEE 754 不仅规定了浮点格式,还规定了精确舍入,使数值代码变得可移植。
IEEE
那一手
在 1980 年代,每台计算机的计算方式都不同。同一程序在不同机器上可能产生不同的结果,甚至崩溃或发散,因为每家厂商都有自己的浮点格式和舍入方式。数值代码不具备可移植性。
IEEE 754 委员会的举措是规定算术运算的结果,而不仅仅是格式。它定义了格式(有效位、指数、次正规数、NaN、无穷大),并且强制要求基本运算采用精确的舍入算法,因此任何符合标准的实现都会返回相同的位。
这样一来,程序在任何遵循标准的机器上都会产生相同的结果,科学代码在任何地方表现一致。这就是为什么 IEEE 754 成为通用标准,也是为什么 8087 及后来的所有浮点单元都采用它的原因。
为什么管用
- 通过规定舍入后的答案,而不仅仅是编码,标准使得不同硬件上的结果完全一致。
- 它定义了边缘情况(次正规数、NaN、无穷大、舍入模式),这样厂商就不能再自行其是。
- 它符合当时新兴浮点协处理器的趋势,因此反映了实际硬件而非与之冲突。
- 可移植的数值代码意味着软件、编译器和操作系统可以在不同平台上被信任。
值了多少标准化操作的结果,而不仅仅是格式。聪明
可以搬走什么
兼容性来自于标准化行为,而不仅仅是表示形式;规定舍入运算的结果,移植者就无需担心。
后来呢
IEEE 754 于 1985 年发布,成为几乎所有 CPU、GPU 和语言的默认浮点格式。其精度、精确舍入和异常行为使得数值库只需编写一次。后续修订(2008、2019)增加了融合乘加、十进制格式以及更多最小最大规则,但 1985 年的核心仍然主导着计算机执行实数运算的方式。
资料来源
发现哪里写错了?告诉我们。