2016-12-23 11 views
0

私はだから私は標準IEEE-754ビットパターンすなわち: 1つの符号ビットを受信することが期待C.IEEE-754と比較してメモリのfloatビットパターンがビット単位で反転していますか?

でフロート数のビットパターンをプリントアウトするプログラムを書きました| 8個のEXPビット| 23仮数ビット

私は出力を得て、その結果をIEEE-754コンバータに入れたとき、その数は間違っていました。ビットでビットを並べ替えると、その番号は正しいものでした。

私は、パターンがBYTE-WISEと逆になる可能性があることを知ったスレッドを見つけましたが、私は完全にBIT-WISEを逆転していませんでした。

誰でもこれにclaryfyできますか?

ここには、プログラム、出力、および変換結果のスクリーンショットがあります。 (あなたは私が逆の順序で、コンバータに数字を入れて、結果は私には正常に見える見ることができるように。)あなたはビットシフトを使用しているので、

Screenshot

答えて

4

エンディアンが、ここでは問題ではありません演算子はオブジェクト全体の値を返します。

逆の順序でビットを印刷するだけで、それ以上のことはありません。

最初に最下位ビットを印刷し、Webページは最上位ビットから開始します。両方の変形が正しい。


サイドノードの1つで、浮動小数点数をintとして解釈する方法は正しくないため、未定義の動作が発生します。浮動小数点型の幅に等しいかそれ以上の幅を持つ符号なし整数を使用し、memcpyを使用する必要があります。

+0

私はパターンとメモリを間違った方法で見たと思います。もしいくつかのアドレスに行くなら、私は単にLSBで始まり、それを移動するとビット0からビット32に移動します。私は "普通の読書の方向"に混乱していると思います。754パターンは最左端からMSBで始まります。 ありがとうございます。 – Ben

+0

私が整数で行う唯一のことは、floatの開始アドレスを格納していて、floatを誤って解釈していないことですか? – Ben

+0

@Ben Cでこれを行うことは許されていません。int型とfloat型は互換性がありません。新しいオブジェクトには、文字型またはmemcpyを使用する必要があります。 – 2501

関連する問題