私が得られないことがあります:
Cの Asigned char
は 8 ビットで表されます。00000000
- 0
0000 0000
=> 0 - 1
0000 0001
=> 1 - ...
- 127 は
0111 1111
=> 127
だから私は8番目のビットが符号ビットだと思った。ので、私は考えました:
- 128
1000 0000
=> 0 - 129
1000 0001
=> -1
しかし、いいえ!
これを試して:
int main(int argc, const char *argv[])
{
int i;
for (i = 0; i < 256; i++) {
printf("%3d = %d\n", i, (signed char)i);
}
return 0;
}
そして、あなたは得る:gcc -o tt tt.c ; ./tt | more
- ...
126 = 126
127 = 127
128 = -128
129 = -127
130 = -126
254 = -2
255 = -1
どうして?