正碼
最高位表示符號位,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)一致。