1. 程式人生 > >定點數二進位制表示

定點數二進位制表示

原碼:
將最高位作為符號位(以0代表正,1代表負),其餘各位代表數值本身的絕對值(以二進位制表示)。
為了簡單起見,我們用1個位元組來表示一個整數。
     +7的原碼為: 00000111
     -7的原碼為: 10000111
問題:
     +0的原碼為:00000000
     -0的原碼為: 10000000
反碼:
一個數如果為正,則它的反碼與原碼相同;一個數如果為負,則符號位為1,其餘各位是對原碼取反。
為了簡單起見,我們用1個位元組來表示一個整數:
     +7的反碼為:00000111
     -7的反碼為: 11111000
問題:
     +0的反碼為:00000000
     -0的反碼為:11111111
補碼:
利用溢位,我們可以將減法變成加法。
對於十進位制數,如果從9得到結果5,可以用減法: 9-4=5
因為4+6=10,我們將6作為4的補數,將上式的減法改寫為加法:9+6=15
去掉高位1(也就是減去10),得到結果5.


對於16進位制數,如果從C得到結果5,可以用減法: C-7=5
因為7+9=16,我們將9作為7的補數,將上式的減法改寫為加法:C+9=15
去掉高位1(也就是減去16),得到結果5.

補碼:一個數如果為正,則它的原碼、反碼、補碼相同;一個數如果為負,則符號位為1,其餘各位是對原碼取反,然後整個數加1。為了簡單起見,我們用1個位元組來表示一個整數:
+7的補碼為: 00000111
-7的補碼為: 第一步:11111000,第二步+1=11111001
問題:0的補碼錶示:
+0的補碼: 00000000
-0的補碼:第一步:11111111 第二步+1= 1 00000000 第三部:進位1被丟棄
     已知一個負數的補碼,將其轉換為十進位制數,步驟:
      1、先對各位取反;
      2、將其轉換為十進位制數;
      3、加上負號,再減去1。
      例如:
      11111010,最高位為1,是負數,先對各位取反得00000101,轉換為十進位制數得5,加上負號得-5,再減1得-6。