帶符號數的表示

上一節,我們學習了進位計數制及其相互轉換,這次我們來看下計算機中帶符號數的表示

在一般算術表示中使用“+”和“-”來表示正數與負數,而在計算機中使用“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

上面的作爲入門吧,下面的這篇文章更詳細,大家可以參考下【詳解】原碼-反碼-補碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章