2の補数を使うと引き算が足し算でできるようになります。
2の補数で表されたマイナスの数を普通に足せば引き算になります。
ただし、計算結果が符号つき整数で表せる範囲を越えると正しい答えになりません。
8ビットでは計算結果が -128 以上 127 以下ならば正しい答えが出ます。
内部表現 | 符号つき整数 (2の補数) |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
+) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
加算実行 | 計算値 | 正しい値 |
内部表現のビットをクリックして数値を設定し、[加算実行]で和を求めます。
結果の表です。
コンピュータの 内部表現 |
計算値 | 正しい値 |
---|---|---|
11111110 | -2 | 254 |
11111101 | -3 | 253 |
11111100 | -4 | 252 |
11111011 | -5 | 251 |
...... | ||
10000010 | -126 | 130 |
10000001 | -127 | 129 |
10000000 | -128 | 128 |
01111111 | 127 | 127 |
01111110 | 126 | 126 |
...... | ||
00001001 | 9 | 9 |
00001000 | 8 | 8 |
00000111 | 7 | 7 |
00000110 | 6 | 6 |
00000101 | 5 | 5 |
00000100 | 4 | 4 |
00000011 | 3 | 3 |
00000010 | 2 | 2 |
00000001 | 1 | 1 |
00000000 | 0 | 0 |
11111111 | -1 | -1 |
11111110 | -2 | -2 |
11111101 | -3 | -3 |
11111100 | -4 | -4 |
11111011 | -5 | -5 |
11111010 | -6 | -6 |
11111001 | -7 | -7 |
11111000 | -8 | -8 |
11110111 | -9 | -9 |
11110110 | -10 | -10 |
...... | ||
10000010 | -126 | -126 |
10000001 | -127 | -127 |
10000000 | -128 | -128 |
01111111 | 127 | -129 |
01111110 | 126 | -130 |
...... | ||
00000110 | 6 | -250 |
00000101 | 5 | -251 |
00000100 | 4 | -252 |
00000011 | 3 | -253 |
00000010 | 2 | -254 |
00000001 | 1 | -255 |
00000000 | 0 | -256 |