減算と2の補数表現
3 - 2は、3 + (-2)と同じ
では、3 - 2 = 1の計算を考えてみましょう。
3 - 2は、3 + (-2)と考えます。
| 10進数 | 2進数 |
|---|---|
1 |
00000000000000000000000000000001 |
3 |
00000000000000000000000000000011 |
-2 |
11111111111111111111111111111110 |
次に、この変換表から、それぞれ2進数に変換します。
3の2進数は、
00000000000000000000000000000011
-2の2進数は、
11111111111111111111111111111110
です。
この2個の2進数を加算しましょう。
10進数の加算では10で繰り上がるのと同様、2進数の加算では、2で繰り上がっていきます。
00000000000000000000000000000011 + 11111111111111111111111111111110 ----------------------------------- 100000000000000000000000000000001
計算結果は100000000000000000000000000000001です。そして、オーバーフローした桁(つまり、最後に繰り上がった一番左の桁)が捨てられますから、計算結果は00000000000000000000000000000001となります。
これを10進数に直すと、1です。
このように、3 - 2 = 1の減算を、2進数の加算だけで行うことができました。
0 - 1の計算をやってみようか
| 10進数 | 2進数 |
|---|---|
0 |
00000000000000000000000000000000 |
-1 |
11111111111111111111111111111111 |
00000000000000000000000000000000 + 11111111111111111111111111111111 ----------------------------------- 11111111111111111111111111111111
| 10進数 | 2進数 |
|---|---|
4294967295 |
11111111111111111111111111111111 |
