背景:計算機內部用補碼表示二進制數。符號位 1 表示負數,0 表示正數。
正數:無區別,正數 的原碼= 反碼 = 補碼
重點討論負數
若已知 負數 -8,則其
原碼為:1000 1000,(1為符號位,為1代表負數,為0代表正數)
反碼為:1111 0111,(符號位保持不變,其他位置按位取反)
補碼為:1111 1000,(反碼 + 1)
即在計算機中 用 1111 1000表示 -8
若已知補碼為 1111 1000,如何求其原碼呢?
(1)方法1:求負數 原碼--->補碼 的逆過程。
注意:符號位保持不變!
(A)先 - 1,得到 1111 0111
(B)取反(符號位保持不變,其他位置按位取反 ),得到 1000 1000
(2)方法2:
注意:符號位保持不變!
(A)將這個二進制數中(即 1111 1000),除了符號位,其余位置按位取反,得 1000 0111
(B)+ 1,得到 1000 1000
總結:
-1 后,再取反 和 取反后,再+1 的效果是一樣的。
這就和 -(3-1) 和 (-3 +1) 是一個道理。