2011-08-15 6 views
0

この質問は、abs(1)より小さい浮動小数点数を負に変換して32.32形式にすることに関するものです。たとえば-0.1234です。バイナリで-0を表現する方法

これを32.32に変換される場合、整数部と小数部は、それぞれ、上側および下側32ビットワードに分離されます。上の例では、上位32ビットは-0を保持し、下位は.1234を保持し、両方ともバイナリに変換されます。

この場合、バイナリで-0の値をどのように正しく表すのでしょうか?

答えて

3

です。

  • Two's complementのように、-0というものはありません。
  • One's complement、-0は全て '1'で表される。
  • Sign-magnitudeであり、-0は符号ビットが '1'であり、他のすべてのビットが '0'である。
+0

良い点。この質問は、EEPROMに二重の値を格納するときに使用する数値書式を指定した顧客の要件から生じました。興味深いことに、この要件は、「32.32 2の補数形式」で数値をエンコードすると言っています。 2の補数であるため、-0.1234の値をエンコードしてEEPROMに書き込んだ後、負の符号を失うことなく取り出してデコードできますか? – DougEC

+0

@doug:「32.32」と考える方法は、「64.0」が 'x *(1L << 32) 'を格納するのとまったく同じ方法で何らかの数字の「x」を表すことです。 –

0

+0 == 0 == -0プログラミングの実際的な目的のためです。この場合、負の数値がどのように処理されているのかを調べる必要があります。 (一般にtwo's complementまたはsign bitのいずれか)、それに応じてサル

関連する問題