首先,計算機中所有的數據都是以二進制存儲的(非 0 即 1),包括正負數的符號也只能用 0 或 1 來表示,所以二進制的最高位如果是 0 表示正數,如果是 1 則表示負數
使用原碼計算#
假設有數值 2 和 -2 如下所示:
+2的原碼為0000_0010-2的原碼為1000_0010
假設要進行 2 + (-2) 計算
0000_0010+1000_0010=1000_0100(十進制的-4)
顯然上面的計算結果不是想要的結果
使用反碼計算#
為了解決上面問題,引入 反碼
反碼:
正數的反碼和原碼相同,負數的反碼除符號位不變,其他位取反
+2的反碼0000_0010-2的反碼1111_1101
再進行 2 + (-2) 計算
0000_0010+1111_1101=1111_1111
上面的計算結果1111_1111是反碼,轉成原碼為1000_0000也就是十進制-0
綜上,可以看出使用 反碼 出現了 +0 和 -0 的問題
使用補碼計算#
在反碼的基礎上引入 補碼
補碼:正數的補碼等於 原碼,負數的補碼是在
反碼的基礎上 加1
+2的補碼0000_0010-2的補碼1111_1110
再進行 2 + (-2) 計算
0000_0010+1111_1110=0000_0000
上述結果正是需要的結果,所以計算機中使用補碼來進行計算