題記
計(jì)算機(jī)存儲(chǔ)數(shù)值方式是通過(guò)原碼鞭缭,反碼受神,補(bǔ)碼來(lái)編碼的抛猖。突然寫(xiě)這個(gè)原碼 反碼 補(bǔ)碼 感覺(jué)很奇怪。
由于今天開(kāi)始補(bǔ)習(xí)一下面試的知識(shí)鼻听,做了一套阿里巴巴的面試題财著,第一道題就是問(wèn)關(guān)于求-7的補(bǔ)碼。查閱資料后撑碴,我覺(jué)得有必要寫(xiě)下來(lái)撑教,以后就不會(huì)忘記。
基礎(chǔ)知識(shí)
原碼
原碼是計(jì)算機(jī)和人最容易理解的表達(dá)醉拓。原碼是符號(hào)位和真實(shí)值的絕對(duì)值來(lái)表示的伟姐。對(duì)于一個(gè)二進(jìn)制數(shù)來(lái)說(shuō)收苏,原碼的第一位是符號(hào)位,其余部分位表示是數(shù)值愤兵。我拿-7的8位二進(jìn)制舉例說(shuō):
-7 的二進(jìn)制10000111倒戏,那么-7的原碼就是10000111。
反碼
- 正數(shù)的反碼就是其本身
- 負(fù)數(shù)的反碼就是保持符號(hào)位不變恐似,數(shù)值位的1變?yōu)?,0變?yōu)?(1-->0 ,0-->1)
我還是那7和-7來(lái)舉例杜跷。
7 的原碼是00000111。7的反碼就是 00000111
-7的原碼是10000111矫夷。-7的反碼就是11111000
補(bǔ)碼
- 正數(shù)的補(bǔ)碼也是其本身
- 負(fù)數(shù)的補(bǔ)碼是:在原碼的基礎(chǔ)上葛闷,保持符號(hào)位不變,數(shù)值位取反再加1双藕。
7 的補(bǔ)碼是00000111淑趾,-7的補(bǔ)碼是11111001。
總結(jié)
正數(shù)的原碼忧陪,反碼扣泊,補(bǔ)碼是一樣的。
負(fù)數(shù)的原碼嘶摊,反碼延蟹,補(bǔ)碼都一樣,但是符號(hào)位都是一樣叶堆,反碼和補(bǔ)碼的區(qū)別在于補(bǔ)碼在最后一位多加1阱飘。