補碼和源碼的相互轉化


一 源碼求補碼

求給定數值的補碼分以下兩種情況:

正數

正整數的補碼是其二進制表示,與原碼相同。

例:+9的補碼是00001001。(備注:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字)。

負數

求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)后加1。

同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。

例:求-5的補碼。

-5對應正數5(00000101)→所有位取反(11111010)→加00000001(11111011)

所以-5的補碼是11111011。

0的補碼

數0的補碼表示是唯一的。

[+0]補=[+0]反=[+0]原=00000000

[-0]補=11111111+1=00000000

補碼求原碼

已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:

⑴如果補碼的符號位為“0”,表示是一個正數,其原碼就是補碼。

⑵如果補碼的符號位為“1”,表示是一個負數,那么求給定的這個補碼的補碼就是要求的原碼。

例:已知一個補碼為11111001,則原碼是10000111(-7)。

因為符號位為“1”,表示是一個負數,所以該位不變,仍為“1”。

其余七位1111001取反后為0000110;再加1,所以是10000111。


免責聲明!

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



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