关于有符号,无符号char与int之间的转换
char(0x86) to int of value=-122unsigned char(0x86) to int of value=134Press any key to continue
?
int a=(char)0x86;
在内存中是用补码表示:1000 0110,
这个是直接作为补码赋给a的,通过符号位扩展那么a就是1111 1111 1111 1111 1000 0110,转换成原码就是
1000 0000 0000 0000 0111 1010, 即十进制的-122
?
int b = (unsigned char)0x86;
在内存中是用原码表示:1000 0110,
这个是直接作为原码赋给b的,通过符号位扩展那么b就是0000 0000 0000 0000 1000 0110,即十进制的134
?
注意: 补码补齐的时候是用1,原码是用0------------这样理解不知道有问题没?望大家指正