爲什麼二進制負數在計算機中的存儲需要使用補碼?一個字節存儲數值範圍爲什麼是-128~127?下面我們開始學習。
1.瞭解補碼
什麼是原碼、反碼和補碼?負數在計算機中的二進制表示是怎樣的?(戳這裏查看)
2.補碼原理
負數爲什麼要用補碼錶示?(戳這裏查看)
從引用鏈接中我們也不難發現補碼有以下特性:
- 原碼與補碼相加,和爲模。
- 正數的補碼等於其本身。
- 補碼正零、負零表示方法相同。
3.一個字節存儲數值範圍
一個字節有八位,能存儲的最大正數爲01111111,其中首位0是符號位,表示數值爲正。數值部分轉換爲十進制爲:
一個字節能存儲的最小負數的補碼爲10000000。由補碼的補碼爲原碼可得:
10000000(求反碼)——>11111111(求補碼)——>1 00000000(化爲十進制)——>-128
所以一個字節存儲數值範圍是-128~127。
爲描述簡潔,下面只考慮四位。下圖(引用自)列出了四位二進制數所有可能表示數字的原碼、反碼和補碼。
我們可以看出,正零和負零的原碼是不同的,但存儲的補碼是相同的(或者說用1 0000表達了-0)。所以,對於補碼來說,就多出了1000這種表達方式。雖然-8的原碼超出了四位能表達的範圍,但是其補碼卻能用四位表達,而計算機存儲的正是補碼。所以,存儲範圍下限的絕對值比上限大1。一個字節同理。