從取反操作學(xué)習(xí)數(shù)值的原碼反碼與補(bǔ)碼
作者: 鄭曉 分類: 編程基礎(chǔ) 發(fā)布于: 2014-05-05 22:12 瀏覽:6,627 評(píng)論(5)
在程序語(yǔ)言中,取反操作一般用~表示。比如在js中,我們對(duì)5這個(gè)整數(shù)做取反操作,表示為:
~5
結(jié)果是:
-6
在網(wǎng)上搜了一些教程了解到,這些數(shù)據(jù)在計(jì)算機(jī)中是以補(bǔ)碼的形式存在的。
正整數(shù)的補(bǔ)碼=反碼=原碼, 三碼相同。
這些碼就是咱們平時(shí)說(shuō)的二進(jìn)制表示法。原碼就是直接將對(duì)應(yīng)十進(jìn)制轉(zhuǎn)為二進(jìn)制后的編碼,如這里5的原碼是
0000 0101
反碼是:
0000 0101
補(bǔ)碼是:
0000 0101
取反操作是把二進(jìn)制所有位數(shù)進(jìn)行取反,所以這里對(duì)5取反后的二進(jìn)制變成了:
1111 1010
我們知道二進(jìn)制最高位(即最左位)是數(shù)值的符號(hào)位,這里為1,說(shuō)明結(jié)果是負(fù)數(shù)。
負(fù)數(shù)的原碼、反碼與補(bǔ)碼的關(guān)系為:
原碼–>符號(hào)位不變,其它所有位取反–>反碼—>+1—>補(bǔ)碼
所以這里先對(duì)我們得到的二進(jìn)制減一,得到反碼,再符號(hào)位不變,其它位取反,得到最終結(jié)果:
上一步我們操作得到的結(jié)果(補(bǔ)碼)為:1111 1010
減一:1111 1001 (反碼)
符號(hào)位不變,其它位取反:1000 0110 (原碼)
現(xiàn)在這個(gè)結(jié)果就是我們對(duì)5取反得到的最終結(jié)果的二進(jìn)制表示,轉(zhuǎn)為十進(jìn)制為-6,即:
~5 = -6
本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/cong-qu-fan-yuan-ma-fan-ma-yu-bu-ma.html
高深莫測(cè)