2の補数についてわかりやすく

More than 1 year has passed since last update.

2の補数とは、2進数の減算において威力を発揮する(2進数を減算を加算で表すことができる)。


定義

2の補数とは2進数表示したものに、数字の0と1を入れ替え、1を足したものである。

4の場合

4の2進数表示は0100。この0100の0と1を入れ替えると1011となる。これに1を足すと1100となる。
よって、1100が4の2の補数表示となる。


やり方

減算において、マイナスがついている符号を2の補数表示し、加算する。加算した結果が2進数で表された減算の答えになる。

5-3 = 2 の場合

5は2進数で0101。3は2の補数で1101
よって
0101 + 1101 = 0010
0010は10進数で2だから、この式は正しい。

10進数
2 進数
2の補数

0000
0000

0001
0001
1111

0002
0010
1110

0003
0011
1101

0004
0100
1100

0005
0101
1011


原理

ビットを反転させるという行為は、n桁の2進数の場合、

(n桁全てが1) - (元の数字)

という計算をする行為と同じである。例えば、『4の2進数表示は0100。この0100の0と1を入れ替えると1011となる。』と先ほど述べたが、

1111 - 0100 = 1011

となる。これは4の2進数表示は0100をビット反転させたものと同じである。

以上から 5-3 = 2 の場合

0101 - 0011 = 0101 + (1111 - 0011 + 1 ) = 10000 + (0101 - 0011)

となり、4桁で考えると10000が無視されるので、2の補数を用いて減算を加算で実現できる。