二. 原碼, 反碼, 補碼的基礎概念和計算方法.
在探求爲什麼機器要使用補碼以前, 讓咱們先了解原碼, 反碼和補碼的概念.對於一個數, 計算機要使用必定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式.編碼
1. 原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其他位表示值. 好比若是是8位二進制:spa
[+1]原 = 0000 0001class
[-1]原 = 1000 0001基礎
第一位是符號位. 由於第一位是符號位, 因此8位二進制數的取值範圍就是:二進制
[1111 1111 , 0111 1111]方法
即計算機
[-127 , 127]di
原碼是人腦最容易理解和計算的表示方式.co
2. 反碼
反碼的表示方法是:block
正數的反碼是其自己
負數的反碼是在其原碼的基礎上, 符號位不變,其他各個位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見若是一個反碼錶示的是負數, 人腦沒法直觀的看出來它的數值. 一般要將其轉換成原碼再計算.
3. 補碼
補碼的表示方法是:
正數的補碼就是其自己
負數的補碼是在其原碼的基礎上, 符號位不變, 其他各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數, 補碼錶示方式也是人腦沒法直觀看出其數值的. 一般也須要轉換成原碼在計算其數值.