1. 程式人生 > >關於計算機中的原碼、反碼、補碼的區別

關於計算機中的原碼、反碼、補碼的區別

數字在計算機中都是用二進位制表示的。數字有有符號和無符號之分,所以需要分正負。

正數的原碼、反碼和補碼是一樣的。

負數則不一樣,最高位用1來表示符號位,為負。

反碼:符號位不變,其他位按位取反。

補碼:反碼+1。

實驗證明,用原碼和反碼來進行負數的運算並不完全正確,用補碼則沒有問題。例如20-18,先計算20和(-18)的補碼,然後相加,再還原出原碼即可。20為正數,補碼和原碼相同是00010100。-18的原碼是10010010,反碼是11101101,補碼是11101110,然後00010100+11101110=00000010,因為補碼結果是正數,所以原碼也是00000010,即為十進位制的2。

注意:當反碼和補碼是正數時,原碼也是正數,且和反碼、補碼相同;當反碼和補碼是負數時,再根據補碼運演算法則反向求出原碼即可(補碼-1,然後除符號位外按位取反即可)。