1、正数的原码反码补码相同
例如:
原码:00000000 00000000 00000000 00010111
反码:00000000 00000000 00000000 00010111
补码:00000000 00000000 00000000
00010111
2、负数的原码反码补码
例如:
原码:10000000 00000000 00000000
10001110
//反码符号位不变,其余由0变成1或由1变成0
反码:11111111 11111111 11111111
01110001
//补码为反码加1
补码:11111111 11111111 11111111
01110010
现在对有符号的的数据类型和无符号的数据类型
如:
char a = 180;
designed char b = 360;
//整数是4个字节,占32位
//对a来分析,180的原码反码补码
原码:00000000 00000000 00000000 10110100
反码:00000000 00000000 00000000 10110100
补码:00000000 00000000 00000000 10110100
char类型是一个字节,取后8位,且为有符号的符号数据
补码:10110100
反码:10110011
原码:11001100
//计算结果:-76
//对b来分析
//300的原码为00000000 00000000 00000001 00101100
unsigned char类型是一个字节,取后8位,且为无符号的符号数据,所以为非负数
故结果为(00101100)2=(44)10