一概念:
原码 : 给我们人类看的
反码:用来原码和补码相互转换用的
补码:给计算机看的
二.那些情况下需要判断
无符号数,原码 反码 补码 都是一样的;
有符号正数,原码 反码 补码 都是一样的;
有符号负数: 反码 = 原码 (符号位不变,数据位按位取反) 补码 = 反码+1
小技巧:进去看数据正负,出来看类型(有无符号)
三.具体实例说明:
3.1无符号的正数
unsigned char v1 = 10
存储时:
原码:0000 1010
反码:0000 1010
补码:0000 1010
取出时:
补码:0000 1010
反码:0000 1010
原码:0000 1010 ‐‐>10
3.2有符号的负数
signed char v2 = ‐10
存储时:
原码:1000 1010
反码:1111 0101
补码:1111 0110
取出时:
补码:1111 0110
反码:1111 0101
原码:1000 1010 ‐‐>‐10
3.3异常:数据位越界占用了符号位
signed char v3 = 129;
存储时 :
原码:1000 0001
反码:1000 0001
补码:1000 0001
取出时:
补码:1000 0001
反码:1000 0000
原码:1111 1111 ‐‐>‐127
3.4无符号类型变量被赋了一个负值
存储时:
原码:1000 0001
反码:1111 1110
补码:1111 1111
取出时:
补码:1111 1111
反码:1111 1111
原码:1111 1111 ‐‐>25