19.3.2 負の整数

ところで負の整数は,どうように表現すれば良いでしょうか? 日常生活では「−1」のように「−(マイナス記号)」を用います. しかし,これでは「0」「1」以外の記号が必要になり, 2進符号化には直接利用できません. そこで,通常は 2の補数 表現と呼ばれる方法を用いて負の整数を表します. これは,加減算などの演算にあたって, 負の数値を正の数値と同様の方法で扱えるためです.

2の補数表現を用いると, m ビットでは −2m-1から 2m-1−1 の範囲の数を表現できます. この場合, 正の整数を表す際の 2m-1 から 2m−1 の2進符号を −2m-1 から −1 の表現に用います. たとえば 4ビットの場合であれば, 次のように −8 = −23 から 7 = 23−1 が表現されます.

数値-8-7-1017
ビット列100010011111000000010111

2の補数表現でオーバーフローが起きると,どうなるでしょうか? この表の場合には, 7 に 1 が加わると -8 に, 逆に -8 から 1 が引かれると 7 になってしまいます. つまり,正の数値は負の数値に,負の数値は正の数値に化けてしまいます.

32ビットの場合には, −2147483648 = −231 から 2147483647 = 231−1 の範囲の数が表現可能です.