1.正数:
int main()
{
char d = 1;
//00000000000000000000000000000001
//00000000000000000000000000000001
//00000000000000000000000000000001
//00000001
//00000000000000000000000000000001 ——进行整型提升,高位补充符号位0
return 0;
}
2.负数:
int main()
{
char c = -1;
//10000000000000000000000000000001
//11111111111111111111111111111110
//11111111111111111111111111111111 ——》-1的补码
//11111111 - c (只有8个比特位)
//11111111111111111111111111111111 ——进行整型提升,高位补充符号位1
return 0;
}
举例:
int main()
{
char a = 5;
//00000000000000000000000000000101
//00000101 ——a里面放的东西
char b = 126;
//00000000000000000000000001111110
//01111110 ——b里面放的东西
char c = a + b;
//00000000000000000000000000000101 ——a
//00000000000000000000000001111110 ——b
//00000000000000000000000010000011 ——相加后的结果
//10000011 -c
printf("%d\n", c);//-125
//由于打印时为%d,即整形,所以需要整型提升
//11111111111111111111111110000011 ——补码
//11111111111111111111111110000010
//10000000000000000000000001111101 ——原码 (-125)
return 0;
}