dポイントプレゼントキャンペーン実施中!

数値を16ビットの浮動小数点表示法で表現する。形式は図に示すとおりである。10進数0.375を正規化した表現はどれか。ここでの正規化は,仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。(H9 秋 問13)
S(1ビット):仮数部の符号(正は0,負は1)
E(4ビット):2のべき乗の指数部で,負数は2の補数
M(11ビット):仮数部の絶対値

【参考にしたサイト】
http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text …


【質問】
Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか?
手持ちの参考書にも同じような説明があったのですが、先頭が符号なのか分かりませんでした。IEEE754では、指数にE-127を使っているので、非負、負の表現は出来る事は分かりました。しかし、上記の場合は、非負、負の判断はEにも符号ビットがないと出来ないように思い質問しました。回答宜しくお願い致します。

A 回答 (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を表現出来ますが」と当たり前のように言ってしまうのは変だということになります。
    • good
    • 0
この回答へのお礼

詳しく回答ありがとうございました。今日仕事の帰りに2の補数の表現範囲について自分で気が付いて、すぐにここを見ると回答を頂いたので申し訳ない気持ちになりました。

勘違いしてた理由が参考書に「重要:負数を2の補数で表した2進数のnけたでは、-2の2乗~2のn-1乗-1の範囲を表すことができる」と書かれており、負数を2の補数で表す場合に限った事だと勘違いをしておりました。それに加え、一つ前のお礼で書いた先頭1ビットが符号である事についての理解が原因でした。

先頭1ビットが符号であるという事が分かり、参考書を読み返したり、十進数と2の補数の対応表を見たりして、重要:負数を2の補数で・・・」の文言以外を考えると、負数に限った話ではないと納得ができ、気が付きました。

おかげさまで、スッキリと解決しました。
色々とご親切にして頂いてありがとうございました。

お礼日時:2010/11/12 21:23

>Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか?



はい,表します。

ご自身による5か月前の質問でも,2の補数とは先頭1ビットが符号の役割をもつ数値表現形式でした。
http://okwave.jp/qa/q5982301.html

逆に言うと,先頭1ビットが符号を表さない2の補数表現というのはありません。

ちなみに,上記の過去の質問については解決できたのでしょうか。疑問が解けたのなら質問を締め切っていただけるとありがたいです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。以前も丁寧に回答いただいたのですが、もう少し時間を下さい。
回答を読んでも、理解し切れなかったので、時間が取れた時にと思っていたら、かなり時間が経過していました。すいませんでした。

wkipediaの2の補数を参照したとろこ、「3 負の整数の見方」では、「ここで、左端のビットを符号ビットとし、符号ビットが1なら負数とする。」と書かれており、2の補数自体が先頭1ビットが必ず符号になると言う表現を見なかった為、混乱しておりました。
「wkipedia 2の補数」
http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C …

で、色々調べながらお礼を書いていると、2の補数でnビット表現出来る範囲が理解が出来ない事に気が付きました。4ビットでは、-8~7を表現出来ますが、負数は-8~-1なので、負数を2の補数で表すとは-8~-1を表す事かと思っていましたが、これが間違いなんですよね?
0と正数が含まれている所がいまいち理屈が分からないですが、前進した感じがしました。
回答ありがとうございました。

お礼日時:2010/11/12 02:58

「2の補数」は、コンピュータで負の値(主に整数)を表現するのに、もっともよく使われている方法だと言えるでしょう。


このような問題の参考書には必ず載っていると思います。

> 負の判断はEにも符号ビットがないと出来ないように思い

「4ビットの符号付き整数で、負は2の補数」とあるだけで、正負の判断方法等は明確なので、わざわざ書かないだけです。

この回答への補足

「4ビットの符号付き整数で、負は2の補数」とあるとは
どこの部分に書いている事ですか?

補足日時:2010/11/12 02:29
    • good
    • 0

「負数は2の補数」


負数とあるので、質問者さんが書いたとおりです。
何ら、間違いではありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2010/11/12 03:05

「2の補数」がどういうものであるか理解できてますか? 理解できているなら, そのような疑問はもたないはずですよ.

この回答への補足

よくこういう回答をされる方を見かけるのですが、どこが理解出来てないのか分からなかったりして、疑問が出てきてしまう状態になっています。なので、詰まった所の回答で分かっていない部分に気がつけてくると思います。見直して気が付ければ良かったのですが、なかなか気が付かなかったので質問を出させて頂きました。

補足日時:2010/11/12 03:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!