2014計算機三級《PC技術》計算機應用基礎知識
(2)整數的變號操作
所謂“變號操作”,是指將該整數變成絕對值相同符號相反的另一個整數。變號操作又稱為“取負”運算,它的處理方法是,將該整數的每一個二進位變反,然后在最末位(個位)加1,其結果即為所求。
(3)整數的移位操作
移位操作有多種。按照移位方向來分,移位操作可分成左移、右移兩大類;按照操作性質則又可區分為算術移位、邏輯移位和循環移位等不同類型。
① 算術移位
當乘數或除數是2n時,算術移位用來快速地完成對整數進行乘法或除法的運算。算術左移n位相當于乘以2n,執行方法是把原來的數中每一位都向左移n個位置,左面移出的高位丟棄,右面低位空出的位置上全部補0。若正數左移過程中移出的位中包含1,或者負數移出的位中包含0時,則表示運算結果超出了可表示的數值范圍,即發生了溢出,結果不正確。
② 邏輯移位
邏輯左移n位的執行方法是,把原來的數中每一位都向左移動n個位置,左面移出的高位丟棄,右面低位空出的位補0。
邏輯右移n位的執行方法是把原來的每一位都向右移動n個位置,右面移出的低位丟棄,左面高位的位置上全部補0。
?、?循環移位
循環移位是一種邏輯操作,它僅僅移動操作數中二進位信息的位置,不會丟棄任何一位信息。循環左移n位是把原來的數中每一位都向左移動n個位置,左面移出的高位放在右面低位空出的位置上。循環右移n位則把原來數中的每一位都向右移動n個位置,右面移出的低位放到左面高位空出的位置上。
(4)邏輯運算
邏輯運算(又稱為布爾運算)總是按位進行處理的,即對應位之間進行規定的邏輯運算,不考慮位與位之間的進位。常用的基本邏輯運算有4種:“非”運算(NOT)、“或”運算(OR)、“與”運算(AND)、“按位加”運算(XOR),它們都非常簡單。
(5)整數加法
兩個帶符號整數相加的運算方法很簡單,只需從低位到高位把所有位(包括符號位)相加,逢二進一,最高位產生的進位忽略不計。做加法運算時判斷有無溢出的規則是,兩個同號的整數相加,若結果的符號卻相反,則發生溢出。注意,是否發生溢出并不取決于最高位有無進位。
(6)整數減法
兩上帶符號整數相減的運算方法也很簡單,只需先把減數變號,然后再與被減數相加即可。
做減法運算時判斷有無溢出的規則是,兩個異號的整數相減,若結果的符號與被減數符號相反,則發生益出。當然,是否發生溢出也并不取決于最高位有無進位。
實數(浮點數)的表示
實數也稱為浮點數,因為它的小數點位置不固定。實數是既有整數又有小數的數,整數和純小數可以看做是實數的特例。任意一個實數在計算機內部都可以用“指數”(整數)和“尾數”(純小數)來表示,這種用指數和尾數來表示實數的方法稱為“浮點表示法”。所以,在計算機中實數也稱為浮點數,而整數則稱為定點數。
以流行的Pentium系列微處理器中的浮點數為例,它表示為如下形式。
可以看出,pentium系列微處理器中的浮點數具有如下性質。
?、?最高位是符號位,它表示該浮點數(實數)的正負。
?、?規格化浮點數的尾數的最高位(第1位)總是1,它不必在尾數表示出來。
?、?浮點數的0有兩種,+0和-0。+0表示成全0,即0 00000000 000000000000000000000000,-0表示成1 00000000 00000000000000000000000。
④ 浮點數的表示范圍雖然很大,但運算中還是可能出現超出它允許范圍的一些結果,這種情況稱為“向上溢出”。
⑤ 浮點數能表示絕對值很小的數,當運算中出現絕對值更小的數時,這種情況稱為“向下溢出”,這時,處理器只能用0來表示。
實數的運算
浮點數的加、減運算要比定點數(整數)復雜得多。下面只作簡要介紹。
① 檢測A和B中有無0,若A=0,則C=B,若B=0,則C=A。運算結束。
② 計算兩數階碼之差,即d=Ea-Eb,若d>0,則將尾數Bs向右移d位,若d<0,則將尾數As向右移-d位,若d=0,則As和Bs均不移位。這個過程稱為對階。
③ 將對階過后的兩個尾數相加或相減。
④ 把結果進行規格化。對于Pentium處理器來說,若結果尾數絕對值小于1,則尾數不斷左移且階碼不斷減1,直至尾數絕對值大于或等于1;若結果尾數絕對值大于或等于2,則尾數右移1位階碼加1。
注意,兩浮點數相加或相減時,在結果規格化的過程中,可能會發生上溢或下溢。浮點數的乘除法比加減法稍簡單一些,其公式為:
乘積=(As×Bs)×2Ea+Eb
商=(As/Bs) ×2Ea-Eb
處理過程如下:
?、?檢測A和B中有無0,若As=0,則乘積(商)=0,運算結束;若Bs=0,做乘法運算時乘積=0,做除法運算時商為∞,運算結束。
?、?計算兩數階碼的和(或差)
?、?兩尾數相乘或相除。
④ 把結果進行規格化,即:若結果尾數絕對值小于1,則尾數不斷左移且階碼不斷減1,若結果尾數絕對值大于或等于2,則尾數右移且階碼加1。
注意,兩浮點數相乘或相除時,在階碼相加 (減)的過程中,或者在結果規格化的過程中,可能會發生上溢或下溢。浮點數運算過程中,為了保證浮點數運算的精度,當尾數右移時,對移出的位還需進行舍入處理。