原碼、反碼和補(bǔ)碼都是計(jì)算機(jī)中常用的表示有符號(hào)整數(shù)的方式。
原碼:將一個(gè)有符號(hào)整數(shù)的符號(hào)位和數(shù)值位分開,數(shù)值位按照正常的二進(jìn)制表示方法表示。例如,如果要表示-5,符號(hào)位為1,數(shù)值位為0101,那么它的原碼就是10101。
反碼:反碼是在原碼的基礎(chǔ)上,將正數(shù)保持不變,負(fù)數(shù)的數(shù)值位按位取反得到的結(jié)果。例如,-5的原碼是10101,那么它的反碼就是11010。
補(bǔ)碼:補(bǔ)碼是在反碼的基礎(chǔ)上,將負(fù)數(shù)的符號(hào)位不變,數(shù)值位加1得到的結(jié)果。例如,-5的反碼是11010,那么它的補(bǔ)碼就是11011。
下面以-5為例,介紹如何計(jì)算原碼、反碼和補(bǔ)碼:
原碼:符號(hào)位為1,數(shù)值位為0101,即10101。
反碼:符號(hào)位為1,數(shù)值位為1010,即11010。
補(bǔ)碼:符號(hào)位為1,數(shù)值位為1011,即11011。
對(duì)于正數(shù)來(lái)說(shuō),其原碼、反碼、補(bǔ)碼都相同,都是其二進(jìn)制表示。而對(duì)于負(fù)數(shù)來(lái)說(shuō),其原碼、反碼、補(bǔ)碼是不同的,補(bǔ)碼是計(jì)算機(jī)中用來(lái)表示負(fù)數(shù)的標(biāo)準(zhǔn)方式,因?yàn)槠淇梢员苊獬霈F(xiàn)0與-0兩種表示方式的情況。