一文搞懂原碼、反碼、補碼

計算機底層均是以二進制表示的,數(shù)字也不例外,本文旨在探討一下數(shù)字的原碼、反碼和補碼。

概念

需要聲明的是,本文涉及到的數(shù)字及運算均基于8位bit下的值。

原碼

最高位為符號位,0代表正數(shù),1代表負數(shù),非符號位為該數(shù)字絕對值的二進制表示。

如:

127的原碼為0111 1111
-127的原碼為1111 1111

反碼

正數(shù)的反碼與原碼一致;

負數(shù)的反碼是對原碼按位取反,只是最高位(符號位)不變。

如:

127的反碼為0111 1111
-127的反碼為1000 0000

補碼

正數(shù)的補碼與原碼一致;

負數(shù)的補碼是該數(shù)的反碼加1

如:

127的補碼為0111 1111
-127的補碼為1000 0001

總結(jié)一下就是:

  1. 正數(shù)的原碼、反碼、補碼是一致的;

  2. 負數(shù)的補碼是反碼加1,反碼是對原碼按位取反,只是最高位(符號位)不變;

  3. 計算機數(shù)字運算均是基于補碼的。

下面就來探討一下,為啥要用補碼來表示數(shù)字。

補碼有啥好?

如果計算機內(nèi)部采用原碼來表示數(shù),那么在進行加法和減法運算的時候,需要轉(zhuǎn)化為兩個絕對值的加法和減法運算;

計算機既要實現(xiàn)加法器,又要實現(xiàn)減法器,代價有點大,那么可不可以只用一種類型的運算器來實現(xiàn)加和減的遠算呢?

很容易想到的就是化減為加,舉一個生活中的例子來說明這個問題:

時鐘一圈是360度,當然也存在365度,但其實它和5度是一樣的;

相同的道理,-30度表示逆時針旋轉(zhuǎn)30度,其與順時針旋轉(zhuǎn)330度是一樣的;

這里數(shù)字360表示時鐘的一圈,在計算機里類似的概念叫,它可以實現(xiàn)化減為加,本質(zhì)上是將溢出的部分舍去而不改變結(jié)果。

易得,單字節(jié)(8位)運算的模為256=2^8。

在沒有符號位的情況下,127+2=129,即:

這時,我們將最高位作為符號位,計算機數(shù)字均以補碼來表示,則1000 0001的原碼為減1后按位取反得1111 1111,也就是-127。

也就是說,計算機里的129即表示-127,相當于模256為一圈,順時針的129則和逆時針127即-127是一樣的。

故可以得到以下結(jié)論:

負數(shù)的補碼為模減去該數(shù)的絕對值

如-5的補碼為:

-5=256-5=251=1111 1011(二進制)

同樣的,臨界值-128也可以表示出來:

-128=256-128=128=1000 0000(二進制)

但是正128就會溢出了,故單字節(jié)(8位)表示的數(shù)字范圍為-128--127。

最后,我們來看一下,補碼是如何通過模的溢出舍棄操作來完成化減為加的!

16-5=16+(-5)=11

1 0000 1011將溢出位舍去,得0000 1011(二進制)=11。

好的,本文分享就到這里,希望能夠幫助到大家。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • http://m.itdecent.cn/p/55a8195291db本篇文章講解了計算機的原碼, 反碼和補...
    PupilCHen閱讀 1,291評論 1 48
  • 本篇文章講解了計算機的原碼, 反碼和補碼. 并且進行了深入探求了為何要使用反碼和補碼, 以及更進一步的論證了為何可...
    yang2yang閱讀 2,487評論 1 13
  • 本篇文章講解了計算機的原碼, 反碼和補碼. 并且進行了深入探求了為何要使用反碼和補碼, 以及更進一步的論證了為何可...
    克里斯加德納閱讀 821評論 0 51
  • 書中關于原碼、反碼、補碼和移碼的定義如下(n是機器字長):原碼: 反碼: 補碼: 移碼: 原碼, 反碼, 補碼的基...
    困卡閱讀 16,326評論 2 8
  • 全局上下文 無論是否在嚴格模式下,在全局執(zhí)行上下文中(在任何函數(shù)體外部)this 都指代全局對象。 函數(shù)上下文 在...
    pengANDpeng閱讀 408評論 0 0

友情鏈接更多精彩內(nèi)容