補碼簡介及計算

2021-10-07 00:20:56 字數 2028 閱讀 4698

補碼是計算機語言中很基礎也很重要的乙個概念,教科書上講,計算機中的數值都是以補碼的形式儲存的,有了補碼,可以變減法為加法,但具體怎麼實現的呢?先從基礎說起。

此型別表示範圍是正整數和0,不含負數。如8位無符號數的表示範圍為:0~255.無符號數的每一位都有權重。

表示範圍基本上是一半正整數,一半負整數。8位有符號整數的大致範圍為-127~127.有符號整數的最高位用來表示數的正負,一般用0表示正數,用1表示負數,該位被稱為符號位,沒有權重。

無符號整數和有符號整數在形態上並沒有區別,以8位整數10000010b(b表示2進製數)為例。它可以作為無符號數來使用,其最高有效位上的「1」表示它對該數的值的貢獻為2的7次冪,即128,它對應的真值為130;該8位整數也可以作為有符號數來使用,其最高有效位上的「1」表示它是乙個負數,但到底其值是多少,有待繼續討論。

下表為8位整數的原碼、反碼、補碼表示形式

十進位制數

二進位制真值

原碼表示

反碼表示

補碼表示

+127

+1111111

01111111

01111111

01111111

+126

+1111110

01111110

01111110

01111110

+2+0000010

00000010

00000010

00000010

+1+0000001

00000001

00000001

00000001

+0+0000000

00000000

00000000

00000000

-0-0000000

10000000

11111111

00000000

-1-00000001

10000001

11111110

11111111

-2-00000010

10000010

11111101

11111110

-126

-1111110

11111110

10000001

10000010

-127

-1111111

11111111

10000000

10000001

-128

-10000000

不能表示

不能表示

10000000

符號位為0表示正,為1表示負;其餘各位等同於真值的絕對值。8位原碼的表示範圍為:-127~+127。

符號位為0表示正,為1表示負;正數的表示同原碼,負數的表示是在原碼表示的基礎上通過將符號位以外各位取反來獲得。8位反碼的表示範圍為-127~+127。

符號位為0表示正,為1表示負;正數的表示同原碼,負數的表示是在反碼表示的基礎上通過加1來獲得。由於資料0的表示方法唯一,並被劃歸為正數,所以負數方向的表示能力比正數多出乙個,這個多出的負數為-128。8位補碼的表示範圍為-128~+127。採用補碼,可以將兩個數的減運算變為這兩個數補碼的加運算來實現。對計算機來說,求補和求和都是很簡單的運算,比減法容易實現。

將乙個負數由真值變為補碼或者反向變化,或者將連個數的減法變為補碼相加,都會用到求補運算。除了「求反加1」的方法外,還可以採用「帶借位0減」的方法。

例如,將真值-37h(h表示16進製制數,即-00110111b)變為它對應的8位補碼:

1,00000000b - 00110111b = 11001001b = c9h

又如,將8位補碼b8h(即10111000b,注意它是乙個負數)還原為真值:

-[1,00000000 - 10111000b] = -01001000b = -48h

採用「帶借位0減」的方法,對十六進製制數的求補運算尤其方便,例如對-37h求補:

1,00h - 37h = c9h

8位整數的減法運算,在計算機中通過補碼加來實現,例如:

x - 37h = x + c9h

補碼的計算

1 在計算機系統中,數值一律用補碼來表示 儲存 主要原因 使用補碼,可以將符號位和其它位統一處理 同時,減法也可按加法來處理。另外,兩個用補 碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄。2 補碼與原碼的轉換過程幾乎是相同的。求給定數值的補碼表示分以下兩種情況 1 正數的補碼 與原碼相...

128的補碼及原碼 反碼 補碼

乙個位元組佔8位 乙個字長為n的機器數能表示不同的數字的個數是固定的2 n個,n 8時2 n 256 用來表示有符號數,數的範圍就是 2 n 1 2 n 1 1,n 8時,這個範圍就是 128 127。用來表示無符號數,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的範圍就是0...

1的補碼及2的補碼

一 計算機的負數表示 二 1的補碼one s complement 反碼 三 2的補碼two s complement 補碼 資料在計算機中由乙個乙個的0,1位元表示,所以在表示負數的時候,不能直接新增符號 來表示這是個負數,必須採用一些規範或者約定來區分正數和負數。有四種比較有名的表示負數的方法 ...