1. 計算機中的反碼、原碼、補碼各指什麼
數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制;
在八位二進制下,-128不能用原碼或反碼表示,反碼只能表示0到127,-0到-127;
用補碼表示為:10000000
在八位整數里原碼的取值范圍為-127到+127,反碼也是;在八位二進制中就把-0當作最小數-128用,也就是10000000
-0的原碼:10000000
-0的反碼:11111111
-128的補碼:10000000
ps://iknow-pic.cdn.bcebos.com/d043ad4bd11373f02abb6339a90f4bfbfaed048b?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"/>
(1)什麼是原碼補碼反碼圖片擴展閱讀
小數原碼
[X] =
X( 0≤X <1 )
1- X (-1 < X ≤ 0)
例如: X=+0.1011 , [X]原= 0.1011
X=-0.1011 [X]原= 1.1011
整數原碼
[X]原 =
X (0≤X <2(n-1))
2(n-1)-X (- 2(n-1) < X ≤ 0)
x為正整數時,[X]原=x;
x為負整數時,[X]原=2的n次方-x;
x為負小數時,[X]原=1-x;
2. 一文搞懂原碼、反碼、補碼
需要聲明的是,本文涉及到的數字及運算均基於 8位bit 下的值。
最高位為符號位,0代表正數,1代表負數,非符號位為該數字絕對值的二進製表示。
如:
127的原碼為0111 1111
-127的原碼為1111 1111
正數的反碼與原碼一致;
負數的反碼是對原碼按位取反,只是 最高位(符號位)不變 。
如:
127的反碼為0111 1111
-127的反碼為1000 0000
正數的補碼與原碼一致;
負數的補碼是該數的 反碼加1 。
如:
127的補碼為0111 1111
-127的補碼為1000 0001
總結一下就是:
下面就來探討一下,為啥要用補碼來表示數字。
如果計算機內部採用原碼來表示數,那麼在進行加法和減法運算的時候,需要轉化為兩個絕對值的加法和減法運算;
計算機既要實現加法器,又要實現減法器,代價有點大,那麼可不可以只用一種類型的運算器來實現加和減的遠算呢?
很容易想到的就是 化減為加 ,舉一個生活中的例子來說明這個問題:
時鍾一圈是360度,當然也存在365度,但其實它和5度是一樣的;
相同的道理,-30度表示逆時針旋轉30度,其與順時針旋轉330度是一樣的;
這里數字360表示時鍾的一圈,在計算機里類似的概念叫 模 ,它可以實現 化減為加 ,本質上是將 溢出的部分捨去 而不改變結果。
易得,單位元組(8位)運算的模為256=2^8。
在沒有符號位的情況下,127+2=129,即:
這時,我們將最高位作為符號位,計算機數字均以補碼來表示,則1000 0001的原碼為減1後按位取反得1111 1111,也就是-127。
也就是說,計算機里的129即表示-127,相當於模256為一圈,順時針的129則和逆時針127即-127是一樣的。
故可以得到以下結論:
負數的補碼為 模減去該數的絕對值 。
如-5的補碼為:
-5=256-5=251=1111 1011(二進制)
同樣的,臨界值-128也可以表示出來:
-128=256-128=128=1000 0000(二進制)
但是正128就會溢出了,故單位元組(8位)表示的數字范圍為-128--127。
最後,我們來看一下,補碼是如何通過模的 溢出舍棄 操作來完成 化減為加 的!
16-5=16+(-5)=11
1 0000 1011將溢出位捨去,得0000 1011(二進制)=11。
好的,本文分享就到這里,希望能夠幫助到大家。
3. 補碼和原碼的區別是什麼
原碼補碼反碼怎麼計算
一、正整數的原碼、反碼、補碼完全一樣,即符號位固定為0,數值位相同。
二、負整數的符號位固定為1,由原碼變為補碼時,規則如下:
1、原碼符號位1不變,整數的每一位二進制數位求反,得到反碼。
2、反碼符號位1不變,反碼數值位最低位加1,得到補碼。
方法:
(1)正整數的原碼,反碼和補碼計算。【符號位為0,原碼=反碼=補碼】
(2)負整數的原碼,反碼和補碼計算,先求原碼,再求反碼,最後求補碼。
(3)根據補碼求真值,一般使用圖中的公式計算,正整數符號為+,負整數符號為-,通常完成補碼求真後,可以按步驟1、2簡單的逆推一下,看結果是否正確。
(3)什麼是原碼補碼反碼圖片擴展閱讀:
補碼的表示方法:
模的概念:把一個計量單位稱之為模或模數。例如,時鍾是以12 進制進行計數循環的,即以12為模。在時鍾上,時針加上(正撥)12的整數位或減去(反撥)12的整數位,時針的位置不變。14點鍾在捨去模12後,成為(下午)2點鍾(14=14-12=2)。
從0點出發逆時針撥10格即減去10小時,也可看成從0點出發順時針撥2格(加上2小時),即2點(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射為+2。由此可見,對於一個模數為12的循環系統來說,加2和減10的效果是一樣的。
因此,在以12為模的系統中,凡是減10的運算都可以用加2來代替,這就把減法問題轉化成加法問題了(註:計算機的硬體結構中只有加法器,所以大部分的運算都必須最終轉換為加法)。10和2對模12而言互為 補數。
同理,計算機的運算部件與寄存器都有一定字長的限制(假設字長為8),因此它的運算也是一種模運算。當計數器計滿8位也就是256個數後會產生溢出,又從頭開始計數。產生溢出的量就是計數器的模,顯然,8位 二進制數,它的模數為2^8=256。在計算中,兩個互補的數稱為「補碼」。