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