7

(バイト エンディアンを考慮しても) IEEE754 浮動小数点がプラットフォーム間で交換可能であることが保証されていないことが主張されています。

そう:

  • 理論的に、IEEE 浮動小数点がプラットフォーム間で交換できないのはなぜですか?
  • これらの問題は、最新のハードウェア プラットフォーム (i686、x64、arm など) で有効ですか?

懸念事項が有効である場合、これが当てはまる例を示していただけますか (C または C++ が推奨されます)。


動機:いくつかのGPS メーカーは、(たとえば) 緯度、経度、生データのバイナリ形式を「IEEE-754 準拠の浮動小数点値」で交換しています。そのため、テキスト形式やその他の「ポータブル」形式を選択することはできません。したがって、私の質問は、違いが発生する場合と発生しない場合があります。

4

1 に答える 1

7

IEEE 754 条項 3.4 は、バイナリ交換フォーマットのエンコーディングを指定します。浮動小数点形式 (下記) を考えると、交換形式は符号ビットを最上位ビットに置き、バイアスされた指数ビットを次の最上位ビットに置き、仮数エンコーディングを最下位ビットに置きます。ビットからバイトへのマッピングは指定されていないため、システムはリトル エンディアン、ビッグ エンディアン、またはその他の順序を使用できます。

条項 3.6 は、1 つの符号ビット、11 の指数フィールド ビット、および 52 の仮数フィールド ビットがある 64 ビット バイナリを含む、さまざまなフォーマット幅のフォーマット パラメータを指定します。この句は、指数バイアスも指定します。

条項 3.3 および 3.4 は、この形式で表されるデータを指定します。

したがって、IEEE-754 浮動小数点データを交換するには、システムが 2 つのことについて合意するだけでよいようです。つまり、使用する形式 (64 ビット バイナリなど) と、ビットをやり取りする方法 (たとえば、マッピング方法) です。ファイルまたはネットワークメッセージに書き込むためのビットからバイトへの変換)。

于 2013-10-14T13:42:49.440 に答える