4

ネットワーク経由で倍精度浮動小数点値 (もちろん正しいバイト順序に調整) を送信し、異なる CPU アーキテクチャ、特に i386、mips (いくつかの異なるコア)、powerpc (e300、e500) でそれらを交換可能に使用しても問題ありませんか。極端に古いハードウェアはありません。

すべてのアーキテクチャーで -Os を指定して gcc 4.2.1 をコンパイラーとして使用。

おそらくそれはどこでもIEEE-754標準です(そうですか?)が、ウィキペディアが言うように:

IEEE 754-1985 では、実装において多くのバリエーションが許可されていました (一部の値のエンコードや特定の例外の検出など)。IEEE 754-2008 はこれらの多くを強化しましたが、いくつかのバリエーションがまだ残っています (特にバイナリ形式の場合)。

NaN やその他の特別なものを渡すつもりはありません。有効な 10 進数だけです。

4

2 に答える 2

2

正規化された数値の表現を送信する場合は、最新のアーキテクチャで完全に安全です。不明な点がある場合は、アーキテクチャ マニュアルを確認してください。非正規化された数値については、チェックする必要があります。

もちろん、正しいバイト順序を使用して、バイトに分解し、反対側で再構築できる必要がありますが、それを行う方法を知っているようです。

前述のように、異なる CPU が標準のすべての部分を同じように実装することは期待できませんが、それは必須ではありません。

IEEE 浮動小数点から ASCII への変換にはエラーがつきものです。1990 年代には、 Guy SteeleWill Clingerによる優れた論文がありました。その後、Burger と Dybvig による、より高速な処理に関するフォローアップがありました。

于 2009-08-07T16:19:30.153 に答える
1

あなたは本質的に「システム間でバイナリデータをシームレスに転送できますか」と尋ねています。2つのシステムが同じ形式に同意する限り、答えは「はい」になります。どのCPUが期待しているのかがわかっている場合は、IEEE標準に準拠していることを確認してください。そうすれば、ビジネスに取り掛かることができます。

于 2009-08-07T15:56:03.663 に答える