正碼、反碼和補碼

正碼

最高位表示符號位,0表示正數,1表示負數,其他位表示爲整數的二進制數。spa

如:33:00100001源碼

  -33:10100001class

反碼

正數的反碼與正碼相同,負數的反碼反碼是在正碼的基礎上對除符號位以外的位取反,0變1,1變0.基礎

33:0010 0001二進制

-33:1101 1110di

補碼

正數的反碼與正碼相同,負數的補碼是在反碼的基礎上,對最低位+1.co

33:0010 0001

-33:1101 1111

注意:

一、正碼對0的表示有兩種:0000 0000和1000 0000,反碼對0的表示也有兩種:0000 0000和1111 1111.

補碼對0的表示只有一種:0000 0000,而1000 0000表示-128

二、正碼和反碼的表示範圍都是-127~+127,補碼的表示範圍是-128~+128.

三、補碼的補碼是原碼。

-32:原碼——1010 0000,反碼——1101 1111,補碼——1110 0000,補碼的反碼——1001 1111,補碼的補碼——1001 0000

四、[x]補+[y]補=[x+y]補

一個數的補碼+另外一個數的補碼等於這兩個數直接相加的補碼。

補碼加法

(1)32+18=50

對於兩個正數,直接就是原碼相加。

(2)-32+(-18)=-50

一、計算兩個數的補碼

-32:源碼——1010 0000,反碼——1101 1111,補碼——1110 0000。

-18:源碼——1001 0010,反碼——1110 1101,補碼——1110 1110。

-50:源碼——1011 0010,反碼——1100 1101,補碼——1100 1110。

二、帶符號位進行二進制加法,對溢出位丟棄

三、對結果進行取補碼,獲得的原碼即兩個數相加的結果

(3)-32+18=-14

與(2)一致。

相關文章
相關標籤/搜索