首先,我們要了解原碼、反碼以及補(bǔ)碼。
原碼可以看做是一個二進(jìn)制數(shù),第一位表示符號,用“0”表示“+”,用“1”表示“-”,其余位表示數(shù)值。
反碼可以看做是原碼與補(bǔ)碼之間的過渡碼。正數(shù)的反碼是其本身原碼,負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上,符號位不變,其余各位取反。
對于補(bǔ)碼而言,正數(shù)的補(bǔ)碼也是其本身原碼,亦是其本身反碼;負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上,符號位不變,其余各位取反,最后再+1,也可以認(rèn)為是在其反碼的基礎(chǔ)上,再+1。
總的來說,如果一個數(shù)是正數(shù),則符號位為0,且它的原碼、反碼、補(bǔ)碼相同;如果一個數(shù)是負(fù)數(shù),則符號位為1,反碼是其余各位取反,補(bǔ)碼是反碼+1。
根據(jù)上述描述,我們可以分別計算一下+0和-0的原碼、反碼、補(bǔ)碼。(0帶符號沒有任何意義)(以4位二進(jìn)制數(shù)為例)
真值 | 原碼 | 反碼 | 補(bǔ)碼 |
+0 | 0000 | 0000 | 0000 |
-0 | 1000 | 1111 | 0000 |
注意:1111+1=10000,取4位為0000。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程