2進数の計算時はブット長が重要であることは 2進数 引き算 答えがマイナス? でも説明しました。
これを再度説明します。
0010 - 0100 と 00000010 - 00000100 の答えが異なることが理解できますか?
0010 - 0100 = 1010
00000010 - 00000100 = 11111010
共に10進数換算では 2-4 = -2 となるべきものです。
下表のSigned(符号付)の場合の4ビットと8ビットの2進数の10進換算マイナスの部分を見ると、ビット長により同じマイナス値でも2進数値は異なることが分かります。
|
4bit |
|
unsigned 符号無し |
signed 符号付 |
0000 |
|
0 |
0 |
0001 |
|
1 |
1 |
0010 |
|
2 |
2 |
0011 |
|
3 |
3 |
0100 |
|
4 |
4 |
0101 |
|
5 |
5 |
0110 |
|
6 |
6 |
0111 |
|
7 |
7 |
1000 |
|
8 |
-8 |
1001 |
|
9 |
-7 |
1010 |
|
10 |
-6 |
1011 |
|
11 |
-5 |
1100 |
|
12 |
-4 |
1101 |
|
13 |
-3 |
1110 |
|
14 |
-2 |
1111 |
|
15 |
-1 | |
|
8bit |
|
unsigned 符号無し |
signed 符号付 |
0000 0000 |
|
0 |
0 |
0000 0001 |
|
1 |
1 |
0000 0010 |
|
2 |
2 |
略 |
0111 1100 |
|
4 |
4 |
0111 1101 |
|
5 |
5 |
0111 1110 |
|
6 |
6 |
0111 1111 |
|
127 |
7 |
1000 0000 |
|
128 |
-128 |
1000 0001 |
|
129 |
-127 |
1000 0010 |
|
130 |
-126 |
略 |
1111 1100 |
|
252 |
-4 |
1111 1101 |
|
253 |
-3 |
1111 1110 |
|
254 |
-2 |
1111 1111 |
|
255 |
-1 | |
|
2進数のSigned時に置けるマイナス表現、基本はそのビット長の全てのビットが1の場合、-1と言うことです。
想像は簡単に着くと思いますが、分かりますか?