1. 程式人生 > >第四章運算方法與運算器4_1

第四章運算方法與運算器4_1

處的 第四章 方法 變形 實現 右移 邏輯移位 發生 運算

2019/03/16 13:48
4.1定點數的加減運算及實現
1)補碼的加減運算:
<1>[X + Y]補 = [X]補 + [Y]補
<2>[X - Y]補 = [X]補 + [-Y]補
由補碼[Y]到[-Y],首先應該轉化為二進制的真值,然後在加上負號變成[-Y];
2)補碼加減的溢出判斷:
關於是正溢還是負溢,看原來的正確的值是正的就是正溢,否則反之;
關於溢出的初級判斷,同號相加和異號相減才會發生溢出;
<1>單符號位判溢出
<2>進位判溢出的方法;就是看符號的最高位和進位的符號不相同就發生了溢出。看進位符號是啥溢出看進位的符號即可。
<3>雙符號(又叫模4補碼和變形補碼)為判溢出的方法,如果進位的兩個符號相異則發生溢出,且看第一位的符號是啥溢出。

3)機器數的位移運算
<1>邏輯移位:正常操作,無論是高位還是低位都是補零,且不帶符號。
<2>算術移位:是帶符號的移位,
原碼:符號位不變,左移就是低位補零,當左移的處的數據位為1時,發生溢出。右移就是符號位不變,然後低位移出,高位補零。
補碼:左移符號位不變,高位移出,低位補零,如果移出的數據位正數為“1”負數為“0”時發生溢出。保證補碼左移不溢出,最高數據位移出必須與符號位相同。算術右移,就是低位移出,高位正數補零,負數補1,即高位補符號位。
反碼:算術左移時,最高有效位直接移入符號位,低位正數補“0”,負數補“1”,即補符號位;算術右移時,符號位不變,高位補符號位,低位移出。
4)移碼的加減運算與判溢
其實就是減數變成了補碼,其余按移碼的來,就是這樣操作。(這是加減運算)
對於判溢,也是按照雙位判溢法,但是符號位最高位恒為0,然後後一位按照符號來,當結果的最高位為1時發生溢出,然後是正溢還是負溢看第二位如果是0,那麽是正溢,否則反之。

第四章運算方法與運算器4_1