上一節,我們學習了進位計數制及其相互轉換,這次我們來看下計算機中帶符號數的表示
在一般算術表示中使用“+”和“-”來表示正數與負數,而在計算機中使用“0”和“1”來表示正數和負數
用“+”或“-”表示正負的數叫真值
用“0”或“1”表示正負的數叫機器數
原碼錶示
二進制數的最高位表示符號,0表示正,1表示負,數值部分用二進制數絕對值表示
注:8位二進制數原碼的最大數爲01111111(+127),最小數爲11111111(-127)0的原碼有兩種表示形式:00000000和10000000(+0和-0)
補碼錶示
- 補碼的定義:帶符號數X的補碼錶示[X]補定義爲[X]補=M+X(Mod M),其中模數M根據機器數的位數而定,如位數爲8則M=28
- 用補碼錶示的機器數,符號位仍然表示數的符號:0爲正,1爲符。對於正數,補碼與原碼相同,對於負數需要進行變換。
- 由真值,原碼變換爲補碼:由於正數的原碼與補碼相同,下面討論負數的變換方法
1.負數的真值變換爲補碼的方法:將各位變反(0變1,1變0)然後在最低位加1
2.負數的原碼變換爲補碼:保持符號位不變,其餘各位變反,最低位加1
例:將-59變換爲補碼
真值 -00111011
原碼 10111011
變反 11000100
加1 11000101
注:當位數爲8時,最大補碼爲01111111=[+127]補,最小補碼爲10000000=[-128]補(這考慮進位),0的補碼只有一個,[0]補=00000000,[-128]補=10000000,[-1]補=11111111
- 補碼的加減運算
規則:[X+Y]補=[X]補+[Y]補
[X-Y]補=[X]補-[Y]補=[X]補+[-Y]補
注:其中[-Y]補是對[Y]補執行一次求補運算(求補運算是將原數連同符號位一起(不管是正還是負)按位求反,再在最低位加1)
例:X=24 Y=8,求[24-8]補
16 原碼 00010000
16 補碼 00010000
24 原碼 00011000
24 補碼 00011000
8的原碼 00001000
8的補碼 00001000
00011000-00001000=00010000
[-8]補是對[8]補進行求補運算,即11111000
00011000+11111000=100010000
上面的作爲入門吧,下面的這篇文章更詳細,大家可以參考下【詳解】原碼-反碼-補碼