原碼補碼


計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,數碼的第一位為符號位,用0表示“正”,用1表示“負”,而數值位,三種表示方法各不相同。

作用:表示和存儲數值

C語言編譯系統分配給各種類型數據字節是不同的,如Turbo C 2.0為每一個整型數據分配2個字節(16個二進位),而Visual C++為每一個整型數據分配4個字節(32位)。

 

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

正數
的補碼是其二進制表示,與原碼相同。
負數
求負整數的補碼,先將此數的絕對值寫成二進制形式除(即寫出此數絕對值的原碼),然后所有位取反(0變1,1變0 ),再加1

例:求-5的補碼。

-5的絕對值5的原碼為(00000101)→所有位取反(11111010)→加1(11111011),所以-5的補碼是11111011.

例:求-4的補碼。

-4絕對值為4,4寫成二進制形式(原碼)為0000 0100,然后所有位數取反1111 1011,再加1得到1111 1100.

補碼求原碼

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

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

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

例:已知一個補碼為11111001,求其原碼。

因為符號位為“1”,表示是一個負數。首先符號位不變,另外幾位都取反后為0000110;再加1,所以是10000111(-7)。

附:如果給整型變量分配2個字節,則在存儲單元中能存放的最大值為01111111 11111111,第1位為0代表正數,后面15位全為1,此數值是十進制2^15-1=32767。最小數是10000000 00000000,此數是-2^15,即-32768。因此一個整型變量的值范圍是-32768~32767。超過此范圍,就會出現數值的“溢出”,輸出的結果就會亂或者不准確。如果給整型變量分配4個字節,其能容納的數值范圍為-2^31~2^31-1,即-2147483648到2147483647。


免責聲明!

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



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