2の補数表現とは、2進数におけるマイナス表現である。
例)10進数「-5」を8ビットの2進数で表す手順
- 「-5」を「5」にする。
- 「5」を8ビットの2進数「00000101」に変換する
- 「00000101」を反転して「11111010」にする
- 「11111010」に「1」を足して「11111011」にする
- つまり「11111011」が「-5」となる
つまり、正の数を反転して「1」プラスした値が、負の数となる。コンピューターは足し算しかできない。そのため足し算で0を作り出す方法を利用して、負の数を導き出さなければならない。同じ数であれば「正+負=0」という法則で負の数を出す。
10進数を例にすると、+5に加えることで0にできる数は-5。
8ビットの2進数でも0を目指す。
8ビット2進数の0は、8桁の「00000000」。これは9桁の「100000000」と同じ扱いになる。最上位ビットの「1」は9ビット目に当たり、8ビット指定においては溢れてしまい無視されるからだ。
では8桁の2進数「00000101」に加えることで0(つまり9桁の100000000)にできる数はなにかといえば、「11111011」。
00000101
+11111011
————–
100000000
「11111011」は、「00000101」を反転させた「11111010」に「1」を加えた数である。だから2進数の「11111011」は、10進数の-5と同じとなる。
コメント