原碼、補碼、反碼和移碼
阿新 • • 發佈:2017-07-12
color 保存 eight png logs 按位取反 編碼表 log 轉換成
在計算機中所有的數據的保存均是用二進制來實現的,而二進制的表示則是一串的0,1組成。而在計算機的表達中有著機器數和原碼,反碼,補碼和移碼等數據的編碼表示方法。其中這些編碼的方法稱為碼制。
一、機器數
各種數據在計算機中的表示的形式稱為機器數,其特點是數的符號用0、1來表示。機器數並不能算作真正的數值。
二、真值
機器數對於的實際數值稱為該數的真值。也就是帶符號的機器數(機器數是不帶符號位的);機器數又分為無符號數和有符號數兩種。無符號數表示正數,在機器數中沒有符號位。對於帶符號數,機器數的最高位是表示正負兩種符號的,其中1表式負數,0表示正數。
三、原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進制,如下:
四、反碼
反碼有兩種情況:
- 當原碼為正數時,其反碼就等於正數的原碼(+原碼 = +反碼)
- 當原碼為負數時,其反碼就等於正數的原碼按位取反,但是最高位的符號位不變
如果一個反碼表示的是負數, 要將其轉換成原碼再計算它真正的數值,否則是不知道它表示是什麽數值
五、補碼
補碼也有兩種情況:
- 當原碼為正的時候,其補碼也等正數的原碼(+原碼 = +反碼 = +補碼)
- 當原碼為負數時,其補碼為負數反碼加1
六、移碼
移碼(又叫增碼)是符號位取反的補碼,如下:
原碼、補碼、反碼和移碼