當前位置:博客首頁>>編程基礎(chǔ) >> 閱讀正文

從取反操作學(xué)習數(shù)值的原碼反碼與補碼

作者: 鄭曉 分類: 編程基礎(chǔ) 發(fā)布于: 2014-05-05 22:12 瀏覽:6,353 評論(5)


在程序語言中,取反操作一般用~表示。比如在js中,我們對5這個整數(shù)做取反操作,表示為:
~5
結(jié)果是:
-6

在網(wǎng)上搜了一些教程了解到,這些數(shù)據(jù)在計算機中是以補碼的形式存在的。

正整數(shù)的補碼=反碼=原碼, 三碼相同。
這些碼就是咱們平時說的二進制表示法。原碼就是直接將對應(yīng)十進制轉(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)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/cong-qu-fan-yuan-ma-fan-ma-yu-bu-ma.html

從取反操作學(xué)習數(shù)值的原碼反碼與補碼:目前有5 條留言

用戶評論頭像 沫小熙iBlog發(fā)表于 2014年05月22日 00:52[回復(fù)]

高深莫測

用戶評論頭像 shaoxieqian發(fā)表于 2014年05月21日 14:21[回復(fù)]

大哥,評論發(fā)不了的哦

    用戶評論頭像 鄭曉發(fā)表于 2014年05月21日 17:48[回復(fù)]

    你的評論被自動放入垃圾評論里了

用戶評論頭像 shaoxieqian發(fā)表于 2014年05月21日 14:20[回復(fù)]

好像很高深的樣子哦 ??

用戶評論頭像 沫小熙iBlog發(fā)表于 2014年05月13日 01:54[回復(fù)]

過來頂頂,重新開站,望大家支持!

發(fā)表評論

change vcode