1.實現X±Y運算,要用如下五步完成: (1)對階操作,即比較兩個浮點數的階碼值的大小.求△E=Ex-Ey。當其不等於零時,首先應使兩個數取相同的階碼值。其實現方法是,將原來階碼小的數的尾數右移|△E|位,其階碼值加上|△E|,即每右移一次尾數要使階碼加1,則該浮點數的值不變(但精度變差了)。尾數右移時,對原碼形式的尾數,符號位不參加移位,尾數高位補0;對補碼形式的尾數,符號位要參加右移並使自己保持不變。為減少誤差,可用 另外的線路,保留右移過程中丟掉的一到幾位的高位值,供以後舍入操作使用。 (2)實現尾數的加(減)運算,對兩個完成對階後的浮點數執行求和(差)操作。 (3)規格化處理,若得到的結果不滿足規格化規則,就必須把它變成規格化的數,對雙符號位的補碼尾數來說,就必須是001××…×或 110××…×的形式。這裡的規格化處理規則是: .當結果尾數的兩個符號位的值不同時,表明尾數運算結果溢位。此時應使結果尾數右移一位,並使階碼的值加1,這被稱為向右規格化,簡稱右規。 .當尾數的運算結果不溢位,但最高數值位與符號位同值,表明不滿足規格化規則,此時應重複地使尾數左移、階減減1,直到出現在最高數值位上的值與符號位的值不同為止,這是向左規格化的操作,簡稱左規。 (4)舍入操作。在執行對階或右規操作時,會使尾數低位上的一位或多位的數值被移掉,使數值的精度受到影響,可以把移掉的幾個高位的值儲存起來供舍入使用。舍入的總的原則是要有舍有入,而且儘量使舍和入的機會均等,以防止誤差積累。常用的辦法有"0"舍"1"入法,即移掉的最高位為1時則在尾數末位加1;為0時則捨去移掉的數值。該方案的最大誤差為2-(n+1)。這樣做可能又使尾數溢位,此時就要再做一次右規。另一種方法"置1"法,即右移時,丟掉移出的原低位上的值,並把結果的最低位置成1。該方案同樣有使結果尾數變大或變小兩種可能。即舍入前尾數最低位已為0,使其變1,對正數而言,其值變大,等於最低位入了個1。若尾數最低位已為1,則再對其置1無實際效用,等於舍掉了丟失的尾數低位值。 (5)判結果的正確性,即檢查階碼是否溢位。浮點數的溢位是以其階碼溢位表現出來的。在加減運算真正結束前,要檢查是否產生了溢位,若階碼正常,加(減)運算正常結束;若階碼下溢,要置運算結果為浮點形式的機器零,若上溢,則置溢位標誌。
1.實現X±Y運算,要用如下五步完成: (1)對階操作,即比較兩個浮點數的階碼值的大小.求△E=Ex-Ey。當其不等於零時,首先應使兩個數取相同的階碼值。其實現方法是,將原來階碼小的數的尾數右移|△E|位,其階碼值加上|△E|,即每右移一次尾數要使階碼加1,則該浮點數的值不變(但精度變差了)。尾數右移時,對原碼形式的尾數,符號位不參加移位,尾數高位補0;對補碼形式的尾數,符號位要參加右移並使自己保持不變。為減少誤差,可用 另外的線路,保留右移過程中丟掉的一到幾位的高位值,供以後舍入操作使用。 (2)實現尾數的加(減)運算,對兩個完成對階後的浮點數執行求和(差)操作。 (3)規格化處理,若得到的結果不滿足規格化規則,就必須把它變成規格化的數,對雙符號位的補碼尾數來說,就必須是001××…×或 110××…×的形式。這裡的規格化處理規則是: .當結果尾數的兩個符號位的值不同時,表明尾數運算結果溢位。此時應使結果尾數右移一位,並使階碼的值加1,這被稱為向右規格化,簡稱右規。 .當尾數的運算結果不溢位,但最高數值位與符號位同值,表明不滿足規格化規則,此時應重複地使尾數左移、階減減1,直到出現在最高數值位上的值與符號位的值不同為止,這是向左規格化的操作,簡稱左規。 (4)舍入操作。在執行對階或右規操作時,會使尾數低位上的一位或多位的數值被移掉,使數值的精度受到影響,可以把移掉的幾個高位的值儲存起來供舍入使用。舍入的總的原則是要有舍有入,而且儘量使舍和入的機會均等,以防止誤差積累。常用的辦法有"0"舍"1"入法,即移掉的最高位為1時則在尾數末位加1;為0時則捨去移掉的數值。該方案的最大誤差為2-(n+1)。這樣做可能又使尾數溢位,此時就要再做一次右規。另一種方法"置1"法,即右移時,丟掉移出的原低位上的值,並把結果的最低位置成1。該方案同樣有使結果尾數變大或變小兩種可能。即舍入前尾數最低位已為0,使其變1,對正數而言,其值變大,等於最低位入了個1。若尾數最低位已為1,則再對其置1無實際效用,等於舍掉了丟失的尾數低位值。 (5)判結果的正確性,即檢查階碼是否溢位。浮點數的溢位是以其階碼溢位表現出來的。在加減運算真正結束前,要檢查是否產生了溢位,若階碼正常,加(減)運算正常結束;若階碼下溢,要置運算結果為浮點形式的機器零,若上溢,則置溢位標誌。