プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

計算機科学の話であれば、他の方々の回答通り、


「2の補数」と呼ばれる表現を使います。
ただ、一般的な「数学」であれば、10進法と同じく、
先頭にマイナス記号をつけたものが負の数です。
    • good
    • 2

コンピュータの勉強でもされているのですか?私も昔アセンブラーで遊んでいた時のことを思い出しました。

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バイトのケースは上の考え方をベースにご自分で確認してください。
    • good
    • 0

計算機が引き算をするときは、じつは、2つめの数をちょっと変形するだけであって、実際にやっている動作は、足し算と同様なんですよね。


引き算の働きをする論理回路って、ちまたの教科書に載っていますから、それを見ると「なるほど」と思うはずです。
    • good
    • 0

2進数の負数の表現は、最上位ビット(MSBといいます)が1のとき負とし、


その値(絶対値)は2の補数で表されます。
とりあえずこちらを参考にしてください。
わかりにくければ、これらを元に具体的に質問してください。
http://www.infonet.co.jp/ueyama/ip/binary/signed …
http://www.h3.dion.ne.jp/~sasuke/kihon/nino-hosu …
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A