計算機原碼、反碼、補碼、移碼轉換及範圍

計算機原碼、反碼、補碼、移碼轉換及範圍

數據的表示:

 

      數值1

    數值-1

    1-1

   原碼

0000 0001

1000 0001

1000 0010

   反碼

0000 0001

1111 1110

1111 1111

   補碼

0000 0001

1111 1111

0000 0000

   移碼

1000 0001

0111 1111

1000 0000

 

  原碼:把一個數轉成二進制形式,二進制不足8位即在左邊補零。最左邊的位又叫做符號位,正數爲0,負數爲1 。如圖,在原碼中 1+(-1)=-2,可見原碼不能直接相加減。於是引入反碼類計算。

  反碼:反碼正數值和原碼相同,不用轉換。負數值除符號位(最左邊)外,其餘取反( 0—>1,1—>0)。根據圖中把1+(-1)反碼相加減可以看等於0是正確的。

  補碼:補碼正數值也和原碼相同,不用轉換。負數值在反碼基礎上在最低位加 1 即可。

  移碼:在補碼基礎上,把補碼符號位取反  即可,其餘不做改變。

 

數值表示範圍:

 

 

               整數

  原碼

  -(2n-1-1)~2n-1-1

  反碼

  -(2n-1-1)~2n-1-1

  補碼

  - 2n-1 ~ 2n-1-1(大一個範圍)

爲什麼補碼大一位呢?

  答:因爲原碼和反碼有兩種0 :

  正0{原碼:0000 0000 ,反碼:0000 0000}

  負0{原碼:1000 0000 ,反碼:1111 1111}

  而補碼0只有唯一的表示(0000 0000),而(1000 0000)被人爲定義爲最小負數,即-128。所以補碼能表示的真值比原碼多      一個。

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