很多人都只知道計算機使用的是二進位,但很少有了解到計算機是以補碼的方式進行存儲數據的。
不過補碼是通過原碼、反碼一步步演變而來的。
原碼
原碼是一種計算機對數字的二進位的定點表示方法。
通常第一位符號位數為0是正,1是負。
反碼
反碼是在原碼的基礎上進一步改進,正數時反碼和原碼一樣,負數時原碼第一位不變,其他都變,就是反碼。
通常一個正數和自身對應的負數的反碼互為補數。
補碼
補碼的正數和反碼以及原碼,普通二進位的一致,沒有區別,而負數實際是在原有負數的反碼上面加1
正數的原碼,反碼,補碼是相同的
為什麼要有這些碼?
原碼不方便進行計算機中有負數參與進來的運算。
計算機存儲數據使用補碼而不是直接用二進位,因為二進位不能表示負數。
原碼雖然能表示負數,但無法進行正負數運算及兩個0的問題。
反碼解決正負數運算的問題,然而還保留著兩個0(正負0)的問題,只有補碼完美解決了正負數運算問題同時還解決了兩個不同符號的0的問題,(在繼續計算時正負0會相互抵消)
因此對於計算機而言,補碼是存儲的最佳選擇。