- ベストアンサー
浮動小数点の表現について - 16ビット浮動小数点表示法の正規化
- 浮動小数点の表現について、質問者は16ビットの浮動小数点表示法での数値の表現について疑問を持っています。具体的には、0.375を正規化した表現はどれか調べたいということです。また、質問者は参考書にも同様の説明があったが、Eの先頭のビットが符号を表すのか分からないと述べています。
- IEC 754では、指数にE-127を使って非負と負の表現を可能にしています。しかし、16ビット浮動小数点表示法の場合、質問者はEに符号ビットがないため、非負か負かの判断ができないと疑問を持っています。
- 質問者は浮動小数点の表現について混乱しており、16ビット浮動小数点表示法ではEの先頭ビットは符号を表すのかどうかを知りたいと質問しています。回答者に解答をお願いしています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>4ビットでは、-8~7を表現出来ますが、 最初からこの言い方が出てくるのが変です。 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 のように,4bitあれば,2の4乗=16とおりのビットパターンになりますけれど,それがどんな数を表現しているかはこの段階では不明です。 このビットパターンを「符号なし整数」として解釈するなら,次のように0以上の正の整数にそれぞれ対応づけられ,負の数は表現できません。 1111 = +15 1110 = +14 1101 = +13 1100 = +12 1011 = +11 1010 = +10 1001 = +9 1000 = +8 0111 = +7 0110 = +6 0101 = +5 0100 = +4 0011 = +3 0010 = +2 0001 = +1 0000 = 0 このビットパターンを「2の補数表現を採用した,符号あり整数」として解釈するなら,次のようにそれぞれ対応づけられます。 1111 = -1 1110 = -2 1101 = -3 1100 = -4 1011 = -5 1010 = -6 1001 = -7 1000 = -8 ――――― 0111 = +7 0110 = +6 0101 = +5 0100 = +4 0011 = +3 0010 = +2 0001 = +1 0000 = 0 >負数を2の補数で表すとは-8~-1を表す事かと思っていましたが、 >これが間違いなんですよね? >0と正数が含まれている所がいまいち理屈が分からない はい,間違いです。2の補数表現を採用するなら,負数も0も正数も表現できます。 また単純に「-8~-1を表す事」でもありません。 「-8~-1を表す事」で良いのなら,16とおりのビットパターンを適当に-8~-1に対応させて独自の負数の表現形式をつくっても良いわけです。そうではなくて,-8~-1を表すために上記のようにビットパターンを対応させたもの,それが2の補数表現です。 よって,冒頭の, >4ビットでは、-8~7を表現出来ますが、 というのは,2の補数表現を採用している場合にそう言える,2の補数を前提としているから出てくる言い方であって, >2の補数でnビット表現出来る範囲が理解が出来ない事に気が付きました という人が「-8~7を表現出来ますが」と当たり前のように言ってしまうのは変だということになります。
その他の回答 (4)
- jjon-com
- ベストアンサー率61% (1599/2592)
>Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか? はい,表します。 ご自身による5か月前の質問でも,2の補数とは先頭1ビットが符号の役割をもつ数値表現形式でした。 http://okwave.jp/qa/q5982301.html 逆に言うと,先頭1ビットが符号を表さない2の補数表現というのはありません。 ちなみに,上記の過去の質問については解決できたのでしょうか。疑問が解けたのなら質問を締め切っていただけるとありがたいです。
お礼
回答ありがとうございます。以前も丁寧に回答いただいたのですが、もう少し時間を下さい。 回答を読んでも、理解し切れなかったので、時間が取れた時にと思っていたら、かなり時間が経過していました。すいませんでした。 wkipediaの2の補数を参照したとろこ、「3 負の整数の見方」では、「ここで、左端のビットを符号ビットとし、符号ビットが1なら負数とする。」と書かれており、2の補数自体が先頭1ビットが必ず符号になると言う表現を見なかった為、混乱しておりました。 「wkipedia 2の補数」 http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0 で、色々調べながらお礼を書いていると、2の補数でnビット表現出来る範囲が理解が出来ない事に気が付きました。4ビットでは、-8~7を表現出来ますが、負数は-8~-1なので、負数を2の補数で表すとは-8~-1を表す事かと思っていましたが、これが間違いなんですよね? 0と正数が含まれている所がいまいち理屈が分からないですが、前進した感じがしました。 回答ありがとうございました。
- kmee
- ベストアンサー率55% (1857/3366)
「2の補数」は、コンピュータで負の値(主に整数)を表現するのに、もっともよく使われている方法だと言えるでしょう。 このような問題の参考書には必ず載っていると思います。 > 負の判断はEにも符号ビットがないと出来ないように思い 「4ビットの符号付き整数で、負は2の補数」とあるだけで、正負の判断方法等は明確なので、わざわざ書かないだけです。
補足
「4ビットの符号付き整数で、負は2の補数」とあるとは どこの部分に書いている事ですか?
「負数は2の補数」 負数とあるので、質問者さんが書いたとおりです。 何ら、間違いではありません。
お礼
回答ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
「2の補数」がどういうものであるか理解できてますか? 理解できているなら, そのような疑問はもたないはずですよ.
補足
よくこういう回答をされる方を見かけるのですが、どこが理解出来てないのか分からなかったりして、疑問が出てきてしまう状態になっています。なので、詰まった所の回答で分かっていない部分に気がつけてくると思います。見直して気が付ければ良かったのですが、なかなか気が付かなかったので質問を出させて頂きました。
お礼
詳しく回答ありがとうございました。今日仕事の帰りに2の補数の表現範囲について自分で気が付いて、すぐにここを見ると回答を頂いたので申し訳ない気持ちになりました。 勘違いしてた理由が参考書に「重要:負数を2の補数で表した2進数のnけたでは、-2の2乗~2のn-1乗-1の範囲を表すことができる」と書かれており、負数を2の補数で表す場合に限った事だと勘違いをしておりました。それに加え、一つ前のお礼で書いた先頭1ビットが符号である事についての理解が原因でした。 先頭1ビットが符号であるという事が分かり、参考書を読み返したり、十進数と2の補数の対応表を見たりして、重要:負数を2の補数で・・・」の文言以外を考えると、負数に限った話ではないと納得ができ、気が付きました。 おかげさまで、スッキリと解決しました。 色々とご親切にして頂いてありがとうございました。