首先對(duì)十進(jìn)制的整型數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制,如果整型是負(fù)的,求得的二進(jìn)制取反再加上1就是補(bǔ)碼,如果是正數(shù),其補(bǔ)碼就是本身。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)德保免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
反碼是將其2進(jìn)制數(shù)每一位按位取反。
即1改為0,0改為1.
補(bǔ)碼則不同。
正數(shù)的補(bǔ)碼是其源碼本身
負(fù)數(shù)的補(bǔ)碼是其除符號(hào)位以外其他每一位按位取反再加一,符號(hào)位不變。
例如:
10進(jìn)制數(shù)11:
源碼:00001011;
反碼:11110100;
補(bǔ)碼:00001011;
十進(jìn)制數(shù)-11:
源碼:10001011;
反碼:01110100;
補(bǔ)碼:11110101;
已知一個(gè)數(shù)的補(bǔ)碼,求原碼的操作其實(shí)就是對(duì)該補(bǔ)碼再求補(bǔ)碼:
1、如果補(bǔ)碼的符號(hào)位為“0”,表示是一個(gè)正數(shù),其原碼就是補(bǔ)碼。
2、如果補(bǔ)碼的符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),那么求給定的這個(gè)補(bǔ)碼的補(bǔ)碼就是要求的原碼。
例如:已知一個(gè)補(bǔ)碼為11111001,則原碼是10000111(-7)。因?yàn)榉?hào)位為“1”,表示是一個(gè)負(fù)數(shù),所以該位不變,仍為“1”。
其余七位1111001取反后為0000110;再加1,所以是10000111。
擴(kuò)展資料:
數(shù)的表示:
在數(shù)的表示上通過(guò)人為的定義來(lái)消除編碼映射的不唯一性,對(duì)轉(zhuǎn)換后的10000000強(qiáng)制認(rèn)定為-128。當(dāng)然對(duì)原碼和反碼也可以做這種強(qiáng)制認(rèn)定,那為什么原碼和反碼沒有流行起來(lái)?原碼和反碼沒有流行起來(lái),是因?yàn)樵跀?shù)的運(yùn)算上對(duì)符號(hào)位的處理無(wú)法用當(dāng)時(shí)已有的機(jī)器物理設(shè)計(jì)來(lái)實(shí)現(xiàn)。
由于原碼和反碼在編碼時(shí)采用了硬性的人工設(shè)計(jì),這種設(shè)計(jì)在數(shù)理上無(wú)法自動(dòng)的通過(guò)模來(lái)實(shí)現(xiàn)對(duì)符號(hào)位的自動(dòng)處理,符號(hào)位必須人工處理,必須對(duì)機(jī)器加入新的物理部件來(lái)專門處理符號(hào)位,這加大了機(jī)器設(shè)計(jì)難度,加大的機(jī)器成本,不到萬(wàn)不得已,不走這條路。
參考資料:
百度百科--補(bǔ)碼
兩種計(jì)算方法:
算法1: 補(bǔ)碼=原碼取反再加1的逆運(yùn)算
10010110是補(bǔ)碼,應(yīng)先減去1變?yōu)榉创a,得10010101;
由反碼取得源碼即除符號(hào)位外其他為按位取反,得11101010,即十進(jìn)制數(shù)的-106
算法2:負(fù)數(shù)補(bǔ)碼速算法,由最低位(右)向高位(左)查找到第一個(gè)1與符號(hào)位之間的所有數(shù)字按位取反的逆運(yùn)算
10010110是補(bǔ)碼,符號(hào)位與最后一個(gè)1之間的所有數(shù)字按位取反,得11101010
兩種算法得出同樣結(jié)果