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

從取反操作學習數值的原碼反碼與補碼

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


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

在網上搜了一些教程了解到,這些數據在計算機中是以補碼的形式存在的。

正整數的補碼=反碼=原碼, 三碼相同。
這些碼就是咱們平時說的二進制表示法。原碼就是直接將對應十進制轉為二進制后的編碼,如這里5的原碼是
0000 0101
反碼是:
0000 0101
補碼是:
0000 0101

取反操作是把二進制所有位數進行取反,所以這里對5取反后的二進制變成了:
1111 1010
我們知道二進制最高位(即最左位)是數值的符號位,這里為1,說明結果是負數。
負數的原碼、反碼與補碼的關系為:
原碼–>符號位不變,其它所有位取反–>反碼—>+1—>補碼
所以這里先對我們得到的二進制減一,得到反碼,再符號位不變,其它位取反,得到最終結果:
上一步我們操作得到的結果(補碼)為:1111 1010
減一:1111 1001 (反碼)
符號位不變,其它位取反:1000 0110 (原碼)
現在這個結果就是我們對5取反得到的最終結果的二進制表示,轉為十進制為-6,即:
~5 = -6

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協議進行許可,轉載時請注明出處及相應鏈接。

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

從取反操作學習數值的原碼反碼與補碼:目前有5 條留言

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

高深莫測

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

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

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

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

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

好像很高深的樣子哦 ??

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

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

發(fā)表評論

change vcode