好好學習,天天向下!
一、原碼
解釋: 數據採用二進制來表示,最高位爲符號位,‘0’代表正,‘1’代表負,其餘爲數字轉換爲二進制的正常值
數值 | 符號位 | 原碼值 |
---|---|---|
+4 | 0 | 0000100 |
-4 | 1 | 0000100 |
二、反碼
解釋: 正數的反碼與其原碼相同,負數的反碼則是對其二進制結果的每一位進行取反(即0變1;1變0);符號位不可改變
數值 | 符號位 | 反碼值 |
---|---|---|
+4 | 0 | 0000100 |
-4 | 1 | 1111011 |
三、補碼
解釋: 正數的補碼與其原碼相同;負數的補碼是其反碼加1
數值 | 符號位 | 補碼值 |
---|---|---|
+4 | 0 | 0000100 |
-4 | 1 | 1111100 |
注:
- 在二進制結果前加上符號位,0或1進行區分數值的正負
- 不管是原碼、反碼、補碼,符號位都是不會改變的
- 在計算機中的數值是以該數的補碼形式來表示
- 使用補碼不僅僅修復了0的符號以及存在兩個編碼的問題,而且還能夠多表示一個最低數,這就是爲什麼8位二進制使用原碼或反碼錶示的範圍爲 [-127, +127],而使用補碼錶示的範圍爲 [-128, 127] 的原因
- 因爲機器使用補碼,所以對於編程中常用到的32位int類型可以表示範圍是 [-2^31, 2^31-1] ,因爲第一位表示的是符號位,而使用補碼錶示時又可以多保存一個最小值