計算機組成原理--運算方法:加減乘除


補碼加減法

補碼加法
公式:[x+y]補=[x]補+[y]補
補碼減法:
為了將減法轉變為加法,需證明公式: [x-y]補=[x]補+[-y]補 (證明)
為了求得同時[-y]補,需要證明[-y]補=[y]補+2^-n(意義是[-y]補等於[y]補取反,末位加1)

溢出檢測

  • 溢出的檢測
  • 可能產生溢出的情況
    • 兩正數加,變負數,上溢(大於機器所能表示的最大數)
    • 兩負數加,變正數,下溢(小於機器所能表示的最小數)

定點原碼乘法

定點乘法原理

n位乘n位積可能為2n位.
乘積的最后是所有部分積之和,有n個數相加,而FA只有兩個輸入端,機器一次只能進行兩個數的相加,不能進行多個數據的加法。
手工計算中,乘數的每一位是0還是1都可直接看見,而在計算機中,采用放乘數的寄存器的每一位直接決定本次相加數是被乘數還是0是很不方便的,若采用該寄存器的最低一位來執行這種判斷就簡便了。

計算機中執行乘法時,積的符號位由被乘數和乘數的符號位通過一個半加器(即異或門)實現。
數值部分的運算規則是:從最低位Y0開始,當乘數Yi為1時,將上次部分積加上被乘數的絕對值,然后右移一位,得到新的部分積;當Yi為0時,則寫下全0。然后再對乘數Y的高一位進行類似乘法運算。重復“加—右移”操作N次,可得到最后的乘積。

R0存放部分積,R2存放被乘數,R1存放乘數
R0清零,R2存放被乘數,R1存放乘數。乘法開始時,“啟動”信號時控制CX置1,於是開啟時序脈沖T,當乘數寄存器R1最末位為“1“時,部分積Z和被乘數X在加法器中相加,其結果輸出至R0的輸入端。一旦控制脈沖T到來,控制信號LDR0使部分積右移1位,與此同時,乘數寄存其R1也在控制信號LDR1作用下右移一位,且計數器I記數一次;
將步驟三重復執行N次
當計數器I=n時,計數器I的溢出信號使控制觸法器CX置0,關閉時序脈沖T,乘法宣告結束

原碼算法存在的缺點:
一是符號位需要單獨運算,最后給運算結構以正確的符號;
二是對於采用補碼存儲的機器,從存儲器中取出的是操作數的補碼,需先將其轉換成原碼,這樣很不方便,而且影響速度。

定點補碼乘法

補碼乘法的特點是乘數、被乘數用補碼表示,符號位參加運算,希望得到的結果就是乘積的補碼,符號位在運算中形成

定點補碼乘法原理


定點除法

在定點計算機中,完成兩個原碼表示的數相除時,商的符號由兩數的符號位和原碼乘法運算方法一樣,用模2求和得到,而商的數值部分則是兩個正數相除得到

計算機中執行除法時,商的符號位由被除數和除數的符號位通過一個半加器實現;
對於數值部分,由於定點小數的絕對值小於1,如果被除數大於或等於除數,則商就大於或等於1,因而會產生溢出,這是不允許的。
因此在執行除法以前,先要判別是否溢出,不溢出時才執行除法運算。判別溢出的方法是被除數減去除數,若差為正,就表示溢出,即要求被除數<除數。

恢復余數法

恢復余數法的運算規則:
計算機中進行除法時,是模仿十進制除法筆算的過程,但又不能完全照搬。
在機器中判斷是否夠減,必須先做減法,若余數為正,表示夠減;若余數為負,表示不夠減 ,不夠減時,必須恢復原來的余數,以便再繼續往下運算,這種方法稱為恢復余數法。
要恢復原來的余數,只要當前的余數加上除數即可。

恢復余數法的缺點:
當某一次-Y的差值為負時,要多一次+Y恢復余數的操作,降低了執行速度,又使控制線路變得復雜,因此在計算機中很少采用

加減交替法

加減交替法的規則:

首先作X-Y,余數為正,表明產生溢出,應終止除法運算;余數為負,上商為0(作為商的符號位),然后重復下述操作n次,可得商的n位數值
a. 余數左移一位。
b. 余數為正時,減除數;余數為負時,加除數。
c. 所得的新余數為正時,上商為1;為負時,上商為0。
由於運算中余數共左移了n次,相當於乘2n,故最后得余數應乘上2-n才是真正的正確余數。

  • 判斷溢出/”0”
  • 商的符號由被除數的符號和除數的符號共同決定
  • 被除數的位數可以是除數位數的兩倍,低位開始放於商的寄存器中.
  • 最后一步余數是負數,需要修正再加上除數,移位.直到為正

浮點加法、減法運算

計算步驟

⑴ 0操作數檢查:用來判斷兩個操作數中是否有一個為0.看有無簡化操作的可能
⑵ 對階操作:即比較兩個浮點數的階碼值的大小,求E=Ex-Ey,然后將小階對大階。
⑶ 尾數進行加或減運算:實現尾數的加減運算,執行兩個完成對階后的浮點數的求和(差)的過程
⑷ 規格化並進行舍入處理:若得到的結果不滿足規格化規則,就必須把它變成規格化的數。舍入操作,在執行對階或右規操作時,會使位數低位上的一位或若干位的數值被移掉,使數值精度受到影響,可以把移掉的幾個高位的值保存起來供舍入使用

4.規格化和舍入處理

結果的符號位與最高符號數值位相同,應執行左規處理,所謂左規格化的規則,就是尾數左移1位,階碼減1,所以結果為:11.00010101(10) ,階碼為00 011,這里采用舍入處理,采用0舍1入法處理,則有

本題不采用IEEE754標准,其規格化的目標是:尾數的絕對值應大於等於1/2且小於1。即正數應為0.1……,負數應為1.0……。可見,當尾數的最高數值位與符號位不同時,即為規格化數

浮點乘法和除法運算

浮點數的階碼運算(移碼的運算規則)
[X]移+[Y]移=2n+[X+Y]移

設有浮點數x=2-5×0.0110011,y=23×(-0.1110010),階碼用4位移碼表示,尾數(含符號位)用8位補碼表示。求[x×y]浮。要求用補碼完成尾數乘法運算,運算結果尾數保留高8位(含符號位),並用尾數低位字長值處理舍入操作。

一個小結()

  • 一個定點數由符號位和數值域兩部分組成。按小數點位置不同,定點數有純小數和純整數兩種表示方法。
  • 按IEEE754標准,一個浮點數由符號位S、階碼E、尾數M三個域組成。其中階碼E的值等於指數的真值e加上一個固定偏移值。
  • 為了使計算機能直接處理十進制形式的數據,采用兩種表示形式:(1)字符串形式,主要用在非數值計算的應用領域;(2)壓縮的十進制數串形式,用於直接完成十進制數的算術運算。
  • 數的真值變成機器碼時有四種表示方法:原碼表示法,反碼表示法,補碼表示法,移碼表示法。其中移碼主要用於表示浮點數的階碼E,以利於比較兩個指數的大小和對階操作。
  • 字符信息屬於符號數據,是處理非數值領域的問題。國際上采用的字符系統是七單位的ASCII碼。直接使用西文標准鍵盤輸入漢字,進行處理,並顯示打印漢字,是一項重大成就。為此要解決漢字的輸入編碼、漢字內碼、字模碼等三種不同用途的編碼
  • 為運算器構造的簡單性,運算方法中算術運算通常采用補碼加、減法,原碼乘除法或補碼乘除法。為了運算器的高速性和控制的簡單性,采用了先行進位、陣列乘除法、流水線等並行技術措施。運算方法和運算器是本章的重點。
  • 定點運算器和浮點運算器的結構復雜程度有所不同。早期微型機中浮點運算器放在CPU芯片外,隨着高密度集成電路技術的發展,現已移至CPU內部。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM