- ベストアンサー
2進数のマイナス表現?
学校の課題で出たのですが この「2進法のマイナス表現」の意味が全く分からないため全然進みません. どういう意味なのでしょうか・・・ 数学苦手です。 詳しく教えてください.お願いします.
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
計算機科学の話であれば、他の方々の回答通り、 「2の補数」と呼ばれる表現を使います。 ただ、一般的な「数学」であれば、10進法と同じく、 先頭にマイナス記号をつけたものが負の数です。
その他の回答 (3)
- KENZOU
- ベストアンサー率54% (241/444)
コンピュータの勉強でもされているのですか?私も昔アセンブラーで遊んでいた時のことを思い出しました。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)
計算機が引き算をするときは、じつは、2つめの数をちょっと変形するだけであって、実際にやっている動作は、足し算と同様なんですよね。 引き算の働きをする論理回路って、ちまたの教科書に載っていますから、それを見ると「なるほど」と思うはずです。
- MovingWalk
- ベストアンサー率43% (2233/5098)
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