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