无符号数与有符号数:
无符号数:
正数,它的值就是它的绝对值。10011010---9A 、154
有符号数:(由二进制第一位数决定)
编码规则与无符号数不同。有符号数最高位是0表示这个数是正数(此时与无符号数的编码规则一样的)。是1表示负数。
比如: 00011010---第一个为0表示这个数为正数,即值为1A;
有符号数的编码规则:
原码:最高位为符号位,其余各位为数值本身的绝对值
反码:
-
- 正数:反码与原码相同
- 负数:符号位为1,其余位对原码取反
补码:
-
- 正数:补码与原码相同
- 负数:符号位为1,其余位对原码取反加1
比如:
有符号数 | 原码 | 反码 | 补码 | 说明 |
1 | 00000001 | 00000001 | 00000001 | 正数的原码、反码补码一样 |
6 | 00000110 | 00000110 | 00000110 | |
-1 | 10000001 | 11111110 | 11111111 | 负数以补码形式保存 |
-7 | 10000111 | 11111000 | 11111001 |
结论:
正数:以原码形式存储
负数:以补码形式存储