原碼
一個數的原碼(原始的二進制碼)有如下特點:
- 最高位做爲符號位,0表示正,爲1表示負
- 其它數值部分就是數值本身絕對值的二進制數
- 負數的原碼是在其絕對值的基礎上,最高位變爲1
下面數值以1字節的大小描述:
十進制數 | 原碼 |
---|---|
+15 | 0000 1111 |
-15 | 1000 1111 |
+0 | 0000 0000 |
-0 | 1000 0000 |
原碼錶示法簡單易懂,與帶符號數本身轉換方便,只要符號還原即可,但當兩個正數相減或不同符號數相加時,必須比較兩個數哪個絕對值大,才能決定誰減誰,才能確定結果是正還是負,所以原碼不便於加減運算。
反碼
- 對於正數,反碼與原碼相同
- 對於負數,符號位不變,其它部分取反(1變0,0變1)
十進制數 | 反碼 |
---|---|
+15 | 0000 1111 |
-15 | 1111 0000 |
+0 | 0000 0000 |
-0 | 1111 1111 |
反碼運算也不方便,通常用來作爲求補碼的中間過渡。
補碼
在計算機系統中,數值一律用補碼來存儲。
補碼特點:
- 對於正數,原碼、反碼、補碼相同
- 對於負數,其補碼爲它的反碼加1
- 補碼符號位不動,其他位求反,最後整個數加1,得到原碼
十進制數 | 補碼 |
---|---|
+15 | 0000 1111 |
-15 | 1111 0001 |
+0 | 0000 0000 |
-0 | 0000 0000 |
在計算機系統中,數值一律用補碼來存儲,主要原因是:
-
統一了零的編碼
-
將符號位和其它位統一處理
-
將減法運算轉變爲加法運算
-
兩個用補碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄