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の補数を用いて減算を加算で実現できる。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.