原碼、反碼、補碼、移碼之間的關系和轉換
阿新 • • 發佈:2017-10-14
span 數值 一個 寄存器 如果 有符號數 pan 關系 style
在計算機中參與運算的數有兩大類:無符號數和有符號數。無符號數,即沒有符號的數,在寄存器中的每一位均可用來存放數值;而有符號數,則需要留出位置來存放符號。以機器字長為8位為例,無符號數表示的範圍是0~255,有符號數表示的範圍是-128~+127。
先明白以下的幾個概念:
機器字長:存放數值的寄存器的位數,如8位,16位。
真值:帶有“+”或“-”符號的數稱為真值。
機器數:把符號“數字化”的數稱為機器數。
原碼、反碼、補碼
原碼:一個整數,按照絕對值大小轉換成的二進制數,最高為為符號位,稱為原碼。 紅色為符號位
反碼: 將二進制除符號位數按位取反,所得的新二進制數稱為原二進制數的反碼。 正數的反碼為原碼,負數的反碼是原碼符號位外按位取反。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
正數:正數的反碼與原碼相同。
負數:負數的反碼,符號位為“1”,數值部分按位取反。
比如:將10000000除符號位每一位取反,得11111111。
補碼: 反碼加1稱為補碼。 (如果反碼最後一位是1得話就向前加1)
1. 正數:正數的補碼和原碼相同。
2. 負數:按照規則來
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
原碼、反碼、補碼、移碼之間的關系和轉換