首页 文章

为什么IEEE-754浮点数不能在平台之间交换?

提问于
浏览
4

已经asserted(即使考虑字节字节序)IEEE754浮点也不能保证在平台之间可以交换 .

所以:

  • 理论上,为什么IEEE浮点不能在平台之间交换?

  • 这些问题是否适用于现代硬件平台(例如i686,x64,arm)?

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


Motivation: 几个GPS manufacturers在"IEEE-754 compliant floating point values"中交换(例如)纬度,经度和原始数据的二进制格式 . 所以,我无法控制选择文本格式或其他"portable"格式 . 因此,我的问题是何时可能会或可能不会发生差异 .

1 回答

  • 6

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

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

    第3.3和3.4条规定了该格式所代表的数据 .

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

相关问题