簡述
因為定點數一般用補碼表示,我們對於原碼的計算復雜,因為操作數取絕對值運算,實際操作並不僅僅取決於操作碼,還與操作數的正負有關,並且可能對運算結果進行修正。因此我們下面主要討論補碼的加減運算方法。
定義
兩個操作數都使用補碼表示,連同符號位一起運算,結果也使用補碼表示。
基本關系
(X+Y)補=X補+Y補
(X-Y)補=X補+(-Y補)
運算規則
首先我們在下面的計算過程中,將下面幾點作為運算規則
1.對於定點整數運算,取mod2n+1的模(n表示不包括符號位的數值);對於定點小數,取mod2
直接舉例
(1)若X=+10010,Y=-10101,求[X+Y]補
1.分別求X,Y的補碼
[X]補=010010,[Y]補=101011
2.代入公式計算
[X+Y]補=[X]補+[Y]補=010010+101011=111101
3.取模運算(取mod25+1)
得到[X+Y]補=111101
【補充】:
如果這道題是要求計算X+Y的值,此時我們有了[X+Y]補,我們只需要對得到的值再次求補就行
X+Y=100011=-00011
(2)已知X=+10101,Y=+10010,求(X-Y)補
這種情況我們需要代入的公式是(X-Y)補=X補+(-Y補),因此我們不管要計算Y補,也要計算(-y)補
[X]補=010101,[Y]補=010010,[-Y]補=101110(連同符號位一起變反加一,變補)
[X+Y]補=[X]補+[-Y]補=010101+101110=1000011
取模預算丟掉最高位1,得到[X-Y]補=000011=+00011
同樣要求X-Y,也是對結果求補等於+00011