規(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
