補碼原理&一個字節存儲數值的範圍如何計算

爲什麼二進制負數在計算機中的存儲需要使用補碼?一個字節存儲數值範圍爲什麼是-128~127?下面我們開始學習。

1.瞭解補碼

什麼是原碼、反碼和補碼?負數在計算機中的二進制表示是怎樣的?(戳這裏查看

2.補碼原理

負數爲什麼要用補碼錶示?(戳這裏查看

從引用鏈接中我們也不難發現補碼有以下特性:

  • 原碼與補碼相加,和爲模。
  • 正數的補碼等於其本身。
  • 補碼正零、負零表示方法相同。

3.一個字節存儲數值範圍

一個字節有八位,能存儲的最大正數爲01111111,其中首位0是符號位,表示數值爲正。數值部分轉換爲十進制爲:

2^6+2^5+......+2^0=\frac{1-2^7}{1-2}=127

一個字節能存儲的最小負數的補碼爲10000000。由補碼的補碼爲原碼可得:

10000000(求反碼)——>11111111(求補碼)——>1 00000000(化爲十進制)——>-128

所以一個字節存儲數值範圍是-128~127。

爲描述簡潔,下面只考慮四位。下圖(引用自)列出了四位二進制數所有可能表示數字的原碼、反碼和補碼。

我們可以看出,正零和負零的原碼是不同的,但存儲的補碼是相同的(或者說用1 0000表達了-0)。所以,對於補碼來說,就多出了1000這種表達方式。雖然-8的原碼超出了四位能表達的範圍,但是其補碼卻能用四位表達,而計算機存儲的正是補碼。所以,存儲範圍下限的絕對值比上限大1。一個字節同理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章