原碼、補(bǔ)碼、反碼和位運(yùn)算

規(guī)則:如圖

1、正數(shù)的原碼、補(bǔ)碼、反碼都是自身;

2、負(fù)數(shù)的反碼等于符號(hào)位不變,數(shù)值位取反;

3、負(fù)數(shù)的補(bǔ)碼等于其反碼+1;

4、通過原碼計(jì)算補(bǔ)碼的規(guī)則和通過補(bǔ)碼計(jì)算原碼的規(guī)則相同;

5、無論正數(shù)還是負(fù)數(shù)在計(jì)算機(jī)中都是以補(bǔ)碼形式存儲(chǔ)的,方便計(jì)算機(jī)進(jìn)行計(jì)算,消除了減法,所以在對(duì)十進(jìn)制的變量進(jìn)行位運(yùn)算的時(shí)候,需要先將其二進(jìn)制的編碼轉(zhuǎn)化為其對(duì)應(yīng)的補(bǔ)碼,運(yùn)算完成后再將的到的新的二進(jìn)制轉(zhuǎn)化為原碼,再將原碼轉(zhuǎn)化為十進(jìn)制數(shù)值進(jìn)行展示。

實(shí)際上在計(jì)算機(jī)上面對(duì)十進(jìn)制的變量進(jìn)行位運(yùn)算,底層操作的是我們這個(gè)十進(jìn)制數(shù)對(duì)應(yīng)的補(bǔ)碼,例如:

1110 0011? ? ? ? ? ? -99的二進(jìn)制值

1001 1100? ? ? ? ? ? -99的二進(jìn)制值的反碼

1001 1101? ? ? ? ? ? 補(bǔ)碼 = -99反碼+1,因?yàn)闊o論正數(shù)還是負(fù)數(shù)在計(jì)算機(jī)中是以補(bǔ)碼形式存儲(chǔ)的,所以1001 1101這就是-99在計(jì)算中存儲(chǔ)的二進(jìn)制

-99的二進(jìn)制左移一位得到0011 1010,因?yàn)?011 1010是正數(shù),所以補(bǔ)碼和原碼相同,對(duì)應(yīng)到十進(jìn)制是58

-99的二進(jìn)制右移一位得到1100 1110,因?yàn)?100 1110是負(fù)數(shù),通過補(bǔ)碼1100 1110計(jì)算得到原碼1011 0010,對(duì)應(yīng)到十進(jìn)制是-50

1010 0011? ? ? ? ? ? -35的二進(jìn)制值

1101 1100? ? ? ? ? ? -35的二進(jìn)制值的反碼

1101 1101? ? ? ? ? ? 補(bǔ)碼 = -35反碼+1,因?yàn)闊o論正數(shù)還是負(fù)數(shù)在計(jì)算機(jī)中是以補(bǔ)碼形式存儲(chǔ)的,所以1101 1101 這就是-35在計(jì)算中存儲(chǔ)的二進(jìn)制

-35的二進(jìn)制左移一位得到1011 1010,因?yàn)?011 1010是負(fù)數(shù),通過1011 1010計(jì)算得到原碼1100 0110,對(duì)應(yīng)到十進(jìn)制是-70

-35的二進(jìn)制右移一位得到1110 1110,因?yàn)?110 1110是負(fù)數(shù),通過1110 1110計(jì)算得到原碼1001 0010,對(duì)應(yīng)到十進(jìn)制是-18

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容