IEEE 754 32 ビット単精度浮動小数点値 (標準 c float 変数) をMIL-STD-1750A形式の unsigned long 変数に変換しようとしています。この投稿の最後に、IEEE 754 と MIL-STD-1750A の両方の仕様を含めました。現在、指数の変換に関するコードで問題が発生しています。仮数の変換にも問題がありますが、まだ修正していません。上記のリンクの表 3 にリストされている例を使用して、プログラムが正しく変換されているかどうかを確認しています。これらの例のいくつかは、私には意味がありません。
これら 2 つの例が同じ指数を持つにはどうすればよいでしょうか?
.5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0000) -1 x 2^0 (1000 0000 0000 0000 0000 0000 0000 0000)
.5 x 2^0 には小数点以下 1 桁があり、-1 には小数点以下の桁がないため、.5 x 2^0 の値は次のようになります。
.5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0010)
右?(1750A はプラス 1 バイアスを使用するため、0001 の代わりに 0010)
最後の例で 32 ビットすべてを使用し、最初のビットを 1 にして負の値を示すにはどうすればよいでしょうか?
0.7500001x2^4 (1001 1111 1111 1111 1111 1111 0000 0100)
指数が 127 の値は 7F (0111 1111) であることがわかりますが、指数が負の 127 の値はどうでしょうか? 81 (1000 0001) でしょうか。もしそうなら、それは127の2の補数+1だからですか?
ありがとうございました