Okapi Project   Web technological site for the beginner... Top

データ表現

補数による負数の表現(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