一個字節是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位)
公式:被減數 - 減數 = 被減數 + (負的減數) = 被減數的原碼 + 負的減數的補碼
注:
十進制負整數的轉換成二進制,也就是對其十進制正整數轉換成二進制,所以十進制負整數表示成二進制就是其補碼形式。