• ベストアンサー

負数を2の歩数で表現する固定小数点表示法においてnビットで表現できる範

負数を2の歩数で表現する固定小数点表示法においてnビットで表現できる範囲 この範囲の小さい方がなぜそうなるのかよくわかりません。たとえば4ビットのとき、1111の補数は10000にならないといけないから1111の補数が表現できないということですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

質問者さんの「-8の2の補数は4ビットでは表現 できない。」が正解ですが、少し補足します。 2進法なので、1桁の表現可能な値は2通りです。 nビットあれば、2のn乗ですから、必ず偶数個の 表現ができます。 例え、1ビットを符号で使うとしても、原理は同じ。 4ビットなので16通りの値が表現できますね。 で、正が8通り、負が8通りです。0も正の値なので、 正の方は0~7、負の方は-1~-8となります。 正の方が0~8だと奇数個になって辻褄が合いませんね。

ghfjri
質問者

お礼

回答ありがとうございます。 まさにドンピシャの回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

教科書どおりの表現で理解しようとすると、 2の補数の考え方はわかりくいものです。 負の数を表すのに2の補数を使う理由は、 ハードウェアがシンプルになるからです。 すなわち、ハードウェア上は正の数のみの 整数計算と 負の数の整数計算はハードウエア上は区別の 必要がないからです。(わかるかな) 通常、値が0のレジスタに1を順に加えていくと最後は すべてのビットが立ちます (この状態をCOBOLではHIGH-VALUE といいます)。 この状態で次に1を加えると0にもどります。 (マスク等の設定でオーバーフローフラグをたてたりできますが) すなわち'11111111'のつぎは'00000000'です。 このメカニズムを利用したのが 負の数を表すのに2の補数表現を用いる理由です。 すなわち'0'の前は'1111111' 0の前は-1と言うことです。 言葉としては次のように覚えておくとよいでしょう 「2の補数表現では'-1'は'11111111'(HIGH-VALUE)で表す」 あとは、先頭ビットを符号ビットに流用していると考えれば おのずと範囲も理解できるでしょう。 (教科書での2の補数の説明は無視しなさい) ちなみに、 負の数の表現に2の補数を使用していないCPUも 存在します。 (マイナーな存在、世間は広いです、データのコンバートがあったら苦労するぞ)

ghfjri
質問者

お礼

回答ありがとうございます。 熱意を感じます。とてもうれしいです。 しかし私には難しすぎた・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

なぜ「1111の補数は10000にならないといけない」のですか? ふつう, 4ビットなら 1111 の 2の補数は 0001 だと思うのですが.

ghfjri
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 数値を浮動小数点表示

    基本情報技術者の勉強を始めたのですが、 浮動小数点の問題で分からないものがありました。 問題は、 ・基数は2。 ・数値を24ビットで表現。 ・左から1ビットは仮数の符号を表す。 (0なら正、1なら負) ・左から数えて2ビット目から8ビット目までで 2のべき乗を表す。(負数は2の補数で表す) ・右16ビットは仮数の絶対値を表す。 (あと、左から数えて8ビット目と9ビット目の間が 小数点位置、だという表示があります。) 以上のように24ビットの浮動小数点表示で、最大数を 16進数で表したものはどれか? この問題の答えは3FFFFFとなっているのですが、 どうしてこのような解答になるのでしょうか? ヒントには「指数部は負数を2の補数で表すので、左から 2ビット目も0でなければならない」とあるのですが、 わけわからない状態です。 簡単で結構ですので、教えていただけないでしょうか。 よろしくお願いします。

  • 固定小数点形式について

    -15を8ビットの固定小数点形式(16進数表示)で 表すとなると、まず-15を 2進数(00001111)→1の補数 11110000 →2の補数 11110001にしてから 16進数(F1)に答えを導けばよいのでしょうか? 数値が違うなどのご指摘もお願いいたします。

  • 2進数表現

    負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)について次のことについて教えてください。 1.表現できる正の最大数を2進数、10進数で表すとどうなるか。 2.表現できる最小の負数(絶対値が最大の負数)を2進数、10進数で表すとどうなるか。 この2つの問題なのですが、どう考えればいいのでしょうか?題意の負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)からあまり意味が分かっていないのですが… よろしければ答えだけではなく考え方も教えてください。よろしくお願いします。

  • 問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示

    問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。 ア 1FFF イ DFFF ウ E000 エ FFFF 以下は、それぞれを2進数表示にしたものです。 先頭の符号ビットは[0]の表記で目立たせてあります。 ア [0]001 1111 1111 1111 イ [1]101 1111 1111 1111 ウ [1]110 0000 0000 0000 エ [1]111 1111 1111 1111 以下は、4倍したもの ア [0]111 1111 1111 1100 イ [0]111 1111 1111 1100 ウ [1]011 0000 0000 0000 エ [1]111 1111 1111 1100 この場合は、ア以外は負数ですが、『負数を2の補数で表現する符号付き16ビットの2進数を、16進数で表現した場合』は16進数が正の数でも、2進数だと負数になると言う事でしょうか? また、符号付きでない場合は、上記はすべて正の数と言う事で合ってますか? 回答を見る感じでは16進数を2進数に変換しただけで、『2の補数で表現』の部分がないように思えます。この辺りも知りたいです。 問題の解き方についても疑問があります。 http://questionbox.jp.msn.com/qa4278151.html での回答では、 イ DFFF →(シフト前)1101 1111 1111 1111 →(シフト後)0111 1111 1111 1100 先頭ビットが1から0に変わったので「桁あふれ」。 問題集の回答ではこっちで説明されていました。 http://okwave.jp/qa/q4302488.html のANo2回答では (シフト前)[1]101 1111 1111 1111 (シフト後)[1]111 1111 1111 1100 2の補数表現による負の数の場合,シフト操作によって1が消えていくのは問題ない。 シフト操作によって0が消えると結果が変になる。これが「あふれ」 符号はシフトさせず、左に2つシフトさせた事で、10が消えた事で桁あふれとしています。 ANo1の回答では、 DFFFだと同様に 1101 1111 1111 1111で1の補数は 0010 0000 0000 0000 2の補数は 0010 0000 0000 0001 つまり、-8193ですよね。 4倍すると、-32772で、これは16ビットの2の補数表現 で表現できる数の範囲からあふれてしまいます。 DFFFなどの2進数に変換後、2の補数を使用するのが正しいのでしょうか? 最初の2つの回答では2の補数を使用していなかったので、疑問に思っています。 頭が混乱しております・・・。 回答宜しくお願い致します。

  • 浮動小数点の表現(基本情報)

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

  • 浮動小数点表現

    2^{24}を32bit整数表現及び32bit(単精度)浮動小数点表現で表せ。 結果は16進数で示せ。 符号ビット:MSB 指数部n:7ビット 仮数部:24ビット という問題があるのですが、 解いてみたものの、答えもないのであっているのか分かりません。 以下の答えで合っているでしょうか? また、合っていなかったら、どのように解くのか教えていただけませんか? 整数表現 0100 0000H 浮動小数点 0100 1000 0100 0000 0000 0000 0000 0000

  • 固定小数点、符号ビットを用いた方法

    固定小数点、符号ビットを用いた方法 -0.1234や-12.3456などの10進数を2進数に変換する場合、固定小数点、符号ビットをどのように設定してよいのかわかりません。

  • 符号付の整数8ビット…

    教えてください。 符号付整数8ビットの2の補数で表現するときの11101111-11110011の計算を2進数で示すときの途中の計算方法を教えてください。 10進数のー13を8ビットの固定小数点(負数は2mの補数形式)の途中の計算方法も教えてください。

  • 16ビットの符号付固定小数点の使い方について

    16ビットの符号付固定小数点について 最上位(15)ビットが符号ビットで14~0ビットが少数部という データフォーマットだった場合、-0,25を表すとしたら、 0.25に符号ビットをセットした値=0xA000( 1 010 0000 0000 0000 ) になるという考え方は正しいでしょうか

  • 浮動小数点表示と固定小数点表示

    固定小数点0.00128を浮動小数点表示すると0.128×10^-2と学校で習ったのですが、1.28×10^-1や128×10^-5としてはいけないのでしょうかどなたか教えてください。