對原碼、反碼和補碼的理解


一個字節是8個bit位,也就是8位二進制數。

1、正整數的原碼、反碼和補碼。

  100的原碼:0110 0100

  100的反碼:0110 0100

  100的補碼:0110 0100

2、負整數的原碼、反碼和補碼。

  -100的原碼:1110 0100

  -100的反碼:1001 1011

  -100的補碼:1001 1100

注:

  1、正數的原碼、反碼和補碼表示方式均相同,不需轉換。

  2、負數轉換成二進制數(也就是原碼)在前面要加符號位(1)。

  3、負數的反碼,將原碼的各位取反,符號位不變

  4、負數的補碼,將反碼加上二進制1即可。

補碼的由來:

  補碼是為了簡化減法而出現的。在我們計算減法的時候,將減號看作是負號,再將負數轉化為補碼求加法。這也是為什么正數的原碼、反碼和補碼是一樣的原因(和正數就沒有關系)。

  在計算機系統中,數值一律用補碼來表示和存儲。是因為使用補碼可以將符號位和數值域統一處理,同時加減法也可以統一處理。

例如:

  72 - 53 = 72 + (-53) = 

  72轉化為二進制數為:0100 1000

  -53轉化為二進制數(原碼)為: 1011 0101   反碼為: 1100 1010    補碼為:1100 1011

  72 + (-53) = 0100 1000 + 1100 1011 =  0001 0011 

  將二進制數0001 0011 轉化為十進制數為19(在計算的時候,在最高位也需要進1,但是只有8位,所以只能丟掉向前進的1位)

  公式:被減數 - 減數 = 被減數 + (負的減數) = 被減數的原碼 + 負的減數的補碼 

注:

  十進制負整數的轉換成二進制,也就是對其十進制正整數轉換成二進制,所以十進制負整數表示成二進制就是其補碼形式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM