8位二进制数的范围
原码、反码、补码区别
- 原码:用符号位和数值标识带符号数,第一位表示符号位,正数的符号位用0,负数的符号位用1,数值部分用二进制形式标识
- 反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外取反
- 补码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外取反,然后在最后一位加1
正零(0000 0000)和负零(1000 0000)的补码相同,都是0000 0000
计算机以补码形式存储
注意,我们常说的都是指补码
真值 | 原码 | 反码 | 补码 | 补码表示的数值 |
---|---|---|---|---|
0 | 0000_0000 | 0000_0000 | 0 | |
1 | 0000_0001 | 0000_0001 | 1 | |
… | ||||
127 | 0111_1111 | 0111_1111 | 127 | |
-0 | 1000_0000 | 1111_1111 | 1_0000_0000 | -128 |
-1 | 1000_0001 | 1111_1110 | 1111_1111 | -127 |
-2 | 1000_0010 | 1111_1101 | 1111_1110 | -126 |
… | ||||
-127 | 1111_1111 | 1000_0000 | 1000_0001 | -1 |
所以
0000_0000 到 0111_1111 => 0到127
1000_0001 到 1111_1111 => -1到-127
上述的-0(1000_0000)特殊情况,规定它在计算机中的表示的数为-128
n位二进制数值范围公式
原码和反码:-2^(n-1)-1到 +2^(n-1)-1
补码:-2^(n-1) 到+2^(n-1)-1