在计算机里面:
正数的源码和补码相同
负数在源码的基础上应该先转换成补码
源码 = 补码 -1 再取反
补码 = 源码 取反 +1
例1:
int main()
{
short int a =129;
char b =a;
printf("%d\n",b);
return 0;
}
Result: -127
过程:源码(补码):1000,0001
减一取反: 1111,1111(127)
例2:
int main()
{
short int a =-129;
char b =a;
printf("%d\n",b);
return 0;
}
Result: 127
过程:负数先取补码:1111,1111,0111,1111
截取:0111,1111
所以结果为 127