• ベストアンサー

2進数のマイナス表現?

学校の課題で出たのですが この「2進法のマイナス表現」の意味が全く分からないため全然進みません. どういう意味なのでしょうか・・・ 数学苦手です。 詳しく教えてください.お願いします.

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

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.4

計算機科学の話であれば、他の方々の回答通り、 「2の補数」と呼ばれる表現を使います。 ただ、一般的な「数学」であれば、10進法と同じく、 先頭にマイナス記号をつけたものが負の数です。

その他の回答 (3)

  • KENZOU
  • ベストアンサー率54% (241/444)
回答No.3

コンピュータの勉強でもされているのですか?私も昔アセンブラーで遊んでいた時のことを思い出しました。2進数もマイナスって何だ!と初めて聞いた時には頭がチカチカ・クラクラしますね(笑い)。さて、簡単のために8ビット(1バイト)の場合を考えましょう。2進数の16進数表記はよくご存知として、2進法のマイナス表現を分かりやすくするために、負の数を含む場合の2進・16進・10進の対応表を示します。  <2進数>   <16進数> <10進数> 01111111  7FH    +127 01111110  7EH    +126 01111101  7DH    +125    :       :      :  00001111  0FH    +15    :       :      : 00001010  0AH    +10 00000001  01H    +1 00000000  00H     0 ---------↑↓----------- 11111111  FFH    -1 11111110  FEH    -2 11111101  FDH    -3    :        :     : 11111110  82H    -126 11111101  81H    -127 11111100  80H    -128 さてFFHに1を加えると100Hとなりますね。しかし、8ビットは16進2桁であるために桁あふれ(オーバーフロー)してしまいます(→8bitCPUではオーバーフローキャリーが立つ)。しかし、オーバーフローを無視すると00Hとなり、FFHは0より1だけ小さいと考えることができますね。つまり-1と考えることができる。ここがミソなのです。するとFEHはさらに1小さいので-2、FDHは同様にして-3としていくのですね。 MovingWalkさんが言われているとおり、負の数を2進数で見た場合、必ず最上位のビットが”1”になっていますね。逆に0または正の数では最上位ビットは必ず”0”になっています。CPUは最上位ビットを見てその数が正か負かを判断しています。この最上位ビットを符号ビットと呼んだりしています。 以上整理すると、 (1)8ビットの場合0から255までの256個の数値を表現することができる。 (2)この256個の数値を半分に区分けし、それぞれ正の数と負の数に対応付けることができる。 (3)具体的には0H~7FHまでの128個の数値を1~127までの数値に、80H~FFHまでの128個の数値を-128~-1までの数値に割り当てる。 (4)従って8ビットのビットパターン全体で-128から+127までの256個の数値を表せることになる。 このような考え方を2の補数による負数の表現とか言っています。尚、16ビット・2バイトのケースは上の考え方をベースにご自分で確認してください。

  • sanori
  • ベストアンサー率48% (5664/11798)
回答No.2

計算機が引き算をするときは、じつは、2つめの数をちょっと変形するだけであって、実際にやっている動作は、足し算と同様なんですよね。 引き算の働きをする論理回路って、ちまたの教科書に載っていますから、それを見ると「なるほど」と思うはずです。

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

2進数の負数の表現は、最上位ビット(MSBといいます)が1のとき負とし、 その値(絶対値)は2の補数で表されます。 とりあえずこちらを参考にしてください。 わかりにくければ、これらを元に具体的に質問してください。 http://www.infonet.co.jp/ueyama/ip/binary/signedbin.html http://www.h3.dion.ne.jp/~sasuke/kihon/nino-hosu.htm