正碼、反碼和補碼


正碼

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

如:33:00100001

  -33:10100001

反碼

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

33:0010 0001

-33:1101 1110

補碼

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

33:0010 0001

-33:1101 1111

注意:

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

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

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

3、補碼的補碼是原碼。

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

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

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

補碼加法

(1)32+18=50

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

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

1、計算兩個數的補碼

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

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

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

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

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

(3)-32+18=-14

與(2)一致。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM