7

已经断言(即使考虑字节字节序)IEEE754浮点不能保证在平台之间可交换。

所以:

  • 为什么从理论上讲,IEEE 浮点数不能在平台之间交换?
  • 这些问题是否适用于现代硬件平台(例如 i686、x64、arm)?

如果问题是有效的,您能否举例说明这种情况(首选 C 或 C++)?


动机:一些GPS 制造商将其二进制格式交换为(例如)“符合 IEEE-754 的浮点值”中的纬度、经度和原始数据。因此,我无法控制选择文本格式或其他“便携式”格式。因此,我的问题必须是何时可能会或可能不会发生差异。

4

1 回答 1

7

IEEE 754 条款 3.4 规定了二进制交换格式编码。给定浮点格式(如下),交换格式将符号位放在最高有效位,偏置指数位在下一个最高有效位,有效数字编码在最低有效位。未指定从位到字节的映射,因此系统可以使用 little-endian、big-endian 或其他排序。

第 3.6 条规定了各种格式宽度的格式参数,包括 64 位二进制,其中有 1 个符号位、11 个指数字段位和 52 个有效位字段位。该子句还指定了指数偏差。

条款 3.3 和 3.4 规定了由这种格式表示的数据。

因此,为了交换 IEEE-754 浮点数据,系统似乎只需要在两件事上达成一致:使用哪种格式(例如,64 位二进制)以及如何来回获取位(例如,如何映射用于写入文件或网络消息的位到字节)。

于 2013-10-14T13:42:49.440 回答