補数による負数の表現(2進数
前のページで2進数での負数の表現を勉強しましたが、あの表現法にはちょっと欠点があります。それは0という値に対して+と-の表現ができてしまうことです。
00000000 → 正の0
10000000 → 負の0
数字の0に+、-という概念はないはずです。
そこで編み出された技が2の補数です。2の補数は、0は±0であるという絶対的な表現ができます。
前のページの負の2進数と同様に、先頭ビットは符号ビットなのですが、符号ビットが1の場合はちょっとした暗号解読をしないと本来の数値を知ることができません。
まず先頭に1が立っているのでこれは負数ということになります。
負数ということがわかったので2の補数としての逆算を行います。
10000000
↓1引く
01111111
↓ビットを逆転
10000000 = 128
つまり10000000は-0ではなくて、-128だということになります。
ちなみに00000000は単純にZEROのことを示します。
※この8桁で表現できる範囲は127 〜 -128です。
元の数字 01001001
ビットを反転↓
1の補数 10110110
1を足す↓
2の補数 10110111