1. 程式人生 > >計算機原理:二進位制 原碼 反碼 補碼

計算機原理:二進位制 原碼 反碼 補碼

在計算機中,1byte=8位,若是無符號的情況下可表示的數字總個數為2^8=256個數,但是計算機只會進行加法運算例如:

5-4 =1     在計算機中的運算方式是  5+(-4)=1,故在計算機中要加入負數的概念,以方便加減法運算。

二進位制的字串中區分正負數,做了以下規定:最高位作為符號位  0表示正數   1表示負數

正數範圍(補碼) 0000 0000~0111 1111  0~127          

負數範圍(補碼) 1000 0000~1111 1111  -128~-1

共256個數(至於為什麼是補碼,後面會詳細解釋)

接下來介紹下 原碼,反碼,補碼。為了能準確表達,以下規定正數的反碼,補碼都等於原碼;負數的補碼等於把反碼加1

例如:

83       ~              原碼   反碼  補碼  0 101 0011  

83……1

41……1

20……0

10……0

5……1

2……0

1……1

-83                                       ~原碼1 101 0011

83……1                             ~反碼1 010 1100

41……1                             ~補碼1 010 1101

20……0

10……0

5……1

2……0

1……1

根據補碼求真值:

為什麼計算機中要以補碼方式表示數值?解釋如下:

首先要了解下什麼是計數系統

  一個計數系統可以存多少容量狀態的數,我叫它作為計數系統的Mod。一個計數系統不斷地加一,那麼它表示的數的狀態也會週期性地變化,我叫這個週期的大小叫做Mod。

  舉個例子:一個時鐘顯示十二個小時,時針旋轉一週後回到原來的狀態,即該系統的Mod為12。只要時針轉360度(也就是12小時),就會和現在所在的數值一樣。

  由此,可以得到一個結論。這種週期性變化的計數系統,一個狀態加減整數倍的Mod,其狀態不會有不會發生變化。

計算機能進行的運算只有加法故需:變減為加

  在計算機中使用加法器對資料進行計算,那麼如何進行減法的運算呢?

  設Mod=32

  若a=3,b=-4,則a+b=a+b+Mod=-1+Mod=a+(Mod-4)=31(在計數系統中-1和31等價)

  實際上Mod-4就是b的補數,所有的減法在計算機中都可以轉化為加上減數的補數,對應計算機上的概念就是補碼。

  因此,計算機是使用補碼(補數)進行計算。