Why is IEEE-754 Floating Point not exchangable between platforms?

空扰寡人 提交于 2019-12-04 22:21:01

问题


It has been asserted that (even accounting for byte endian-ness) IEEE754 floating point is not guaranteed to be exchangeable between platforms.

So:

  • Why, theoretically, is IEEE floating point not exchangeable between platforms?
  • Are any of these concerns valid for modern hardware platforms (e.g. i686, x64, arm)?

If the concerns are valid, can you please demonstrate an example where this is the case (C or C++ is preferred)?


Motivation: Several GPS manufacturers exchange their binary formats for (e.g.) latitude, longitude and raw data in "IEEE-754 compliant floating point values". So, I don't have control to choose a text format or other "portable" format. Hence, my question has to when the differences may or may not occur.


回答1:


IEEE 754 clause 3.4 specifies binary interchange format encodings. Given a floating-point format (below), the interchange format puts the sign bit in the most significant bit, biased exponent bits in the next most significant bits, and the significand encoding in the least significant bits. A mapping from bits to bytes is not specified, so a system could use little-endian, big-endian, or other ordering.

Clause 3.6 specifies format parameters for various format widths, including 64-bit binary, for which there is one sign bit, 11 exponent field bits, and 52 significand field bits. This clause also specifies the exponent bias.

Clauses 3.3 and 3.4 specify the data represented by this format.

So, to interchange IEEE-754 floating-point data, it seems systems need only to agree on two things: which format to use (e.g., 64-bit binary) and how to get the bits back and forth (e.g., how to map bits to bytes for writing to a file or a network message).



来源:https://stackoverflow.com/questions/19351843/why-is-ieee-754-floating-point-not-exchangable-between-platforms

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!