計算機原碼 反碼 補碼理解

2021-10-20 22:35:13 字數 1842 閱讀 1296

計算機使用一定的編碼方式進行儲存,原碼、反碼、補碼是機器儲存乙個具體數字的編碼方式

1 原碼 

第一位表示符號 正數第一位為0,負數第一位為1,其餘位表示值;以8位二進位制表示

+1 原碼 0000 0001

-1  原碼 1000 0001

第一位為符號位(正負數符號位),所以8位二進位制原碼範圍為 

1111 1111 ,0111 1111  即 -127,127

原碼是人容易理解的計算表示方式

2 反碼

正數的反碼就是其本身

負數的反碼是在原數基礎,符號位不變(第一位不變),其餘各個位取反。

+1  原碼  0000  0001   反碼  0000 0001

-1  原碼   1000 0001    反碼  1111  1110

負數的反碼是不可直**出,最好轉換成原碼方式進行計算,就是上例子中

反碼 1111  1110  轉換成原碼  1000 0001 ,就是-1了

3 補碼

正數的補碼就是其本身

負數的補碼是在原數基礎,符號位不變(第一位不變),其餘各個位取反,再+1 

其實負數的補碼,是在負數的反碼基礎+1 即可

+1  原碼 0000 0001   反碼 0000 0001  補碼 0000 0001

-1  原碼  1000 0001  反碼  1111 1110   補碼  1111  1111

跟反碼相同,不可以直**出,負數的補碼轉換成原碼進行計算,方便理解

補碼1111 1111 先減一 1111 1110(現在反碼形式了) ,第一位(符號位不變),

其餘各位取反  1000  0001(原碼形式了) -1 

原碼是最容易理解為什麼還需要引入反碼和補碼呢?

計算機運算只保留加法方式,為了解決原碼減法的問題,出現了反碼

例如   1-1 = 1+(-1)= 原碼 0000 0001 + 1000 0001 = 反碼 0000 0001 + 1111 1110 = 反碼 1111 1111  

= 原碼 1000 0000 = -0 

但是在 +0 和 -0 其實表示為0 ,二進位制位 0000  0000 ,1000 0000,為了解決0的

符號問題以及0的兩個編碼問題,出現了補碼

1-1 = 1+(-1) = 原碼 0000 0001 + 1000 0001 = 補碼 0000 0001 + 1111 1111 

= 補碼 1 0000 0000(1沒有在這個1位元組裡面) = 原碼 0000 0000 

這樣0就用 0000  0000 表示了,就沒有 -0的存在了

同時可以使用 1000 0000 表示-128

-1 + -127 = 原碼 1000 0001 + 1111 1111 = 補碼 1111 1111 + 1000 0001 = 補碼 1000 000 

=反碼 1111 1111 = 原碼 1000 0000

這個地方 反碼 1000 0000 向反碼轉換可以 先原碼-128 是 -128為正數 1000 0000

這個第一位為1 應該是符號位,溢位丟棄進製法則:在用有符號整形表示二進位制數時,當後面的非符號位

發生溢位是,符號位不變,直接丟棄溢位為的進製

-128 原碼 1000 0000 最高位1表示符號位,後面7位發生溢位,進製丟棄,符號位不變

反碼 1111 1111  補碼 1000 0000 反碼末位加1,使後7位再次溢位,進製丟棄,符號位不變

綜上所述,使用補碼,修復了0的符號存在的-0和+0問題,還能夠多表示乙個最低數

即8位二進位制,使用原碼或反碼表示範圍 -127,+127;

使用補碼表示範圍 -128,127;機器使用補碼儲存在補碼表示是多儲存乙個最小值

計算機 原碼 反碼 補碼

在計算機中,用補碼來表示數字,因為 1 這樣可以比較方便的表示0 保證0作為正數或者負數補碼都是00000000 2 計算時用補碼直接加減就是最終數值 符號位參與運算 1.原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 ...

計算機原碼, 反碼, 補碼

乙個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號,正數為0,負數為1.因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 3 而不是形式值131 10000011轉換...

計算機原碼,反碼,補碼

最近花了點時間對計算機的原碼,反碼和補碼進行了研究,對為什麼要有反碼和補碼以及他們這麼設計的原因有了一定的理解 機器數 乙個數在計算機中的表現形式叫做機器數,這個數有正負之分,在計算機中用乙個數的最高位 符號位 用來表示它的正負,其中0表示正數,1表示負數。例如正數7,在計算機中用乙個8位的二進位制...