您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>電腦硬件>臺(tái)式機(jī)>

溢出,溢出的檢測(cè)方法有哪些?

2010年04月13日 11:02 www.wenjunhu.com 作者:佚名 用戶評(píng)論(0
關(guān)鍵字:溢出(7298)
溢出,溢出的檢測(cè)方法有哪些?
  
  在定點(diǎn)小數(shù)機(jī)器中,數(shù)的表示范圍為|x|<1. 在運(yùn)算過(guò)程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。在定點(diǎn)機(jī)中,正常情況下溢出是不允許的。

  [例12] x=+0.1011, y=+0.1001,求x+y。
  
  [解:]
  
  [x]補(bǔ)=0.1011 [y]補(bǔ)=0.1001
  
  [x]補(bǔ)   ? 0.1011
  
 ?。玔y]補(bǔ)    0.1001
  --------------------
  [x+y]補(bǔ)  1.0100
  
  兩個(gè)正數(shù)相加的結(jié)果成為負(fù)數(shù),這顯然是錯(cuò)誤的。
  
  [例13] x=-0.1101, y=-0.1011,求x+y。
  
  [解:]
  
  [x]補(bǔ)=1.0011 [y]補(bǔ)=1.0101
  
  [x]補(bǔ)   ? 1.0011
  
  +[y]補(bǔ)??  ?1.0101
  --------------------
  [x+y]補(bǔ) ? 0.1000
  
  兩個(gè)負(fù)數(shù)相加的結(jié)果成為正數(shù),這同樣是錯(cuò)誤的。

之所以發(fā)生錯(cuò)誤,是因?yàn)檫\(yùn)算結(jié)果產(chǎn)生了溢出。兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為上溢。而兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為下溢。
  
  為了判斷“溢出”是否發(fā)生,可采用兩種檢測(cè)的方法。第一種方法是采用雙符號(hào)位法,這稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,從而可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍。變形補(bǔ)碼定義為
  
  ????????????????????????? (2.22)
  
  或用同余式表示為
  
  [x]補(bǔ)=4+x   (mod 4)
  
  下式也同樣成立:
  
  [x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)??? (mod 4)
  
  為了得到兩數(shù)變形補(bǔ)碼之和等于兩數(shù)之和的變形補(bǔ)碼,同樣必須:
  
  1. 兩個(gè)符號(hào)位都看作數(shù)碼一樣參加運(yùn)算
  
  2. 兩數(shù)進(jìn)行以4位模的加法,即最高符號(hào)位上產(chǎn)生的進(jìn)位要丟掉。
  
  采用變形補(bǔ)碼后,如果兩個(gè)數(shù)相加后,其結(jié)果的符號(hào)位出現(xiàn)“01或“10兩種組合時(shí),表示發(fā)生溢出。這是因?yàn)閮蓚€(gè)絕對(duì)值小于1的數(shù)相加,其結(jié)果不會(huì)大于或等于2,所以最高符號(hào)位永遠(yuǎn)表示結(jié)果的正確符號(hào)。
  
  [例14] x=+0.1100, y=+0.1000,求x+y。
  
  [解:]
  
  [x]補(bǔ)=00.1100, [y]補(bǔ)=00.1000
  
  [x]補(bǔ)   00.1100
  
 ?。玔y]補(bǔ)  00.1000
  -------------------
????????????????01.0100
  
  兩個(gè)符號(hào)位出現(xiàn)“01”,表示已溢出,即結(jié)果大于+1。

[例15] x=-0.1100, y=-0.1000,求x+y。
  
  [解:]
  
  [x]補(bǔ)=11.0100, [y]補(bǔ)=11.1000
  
  [x]補(bǔ)   11.0100
  
  +[y]補(bǔ)  11.1000
  -------------------
  ?????????? ?10.1100
  
  兩個(gè)符號(hào)位出現(xiàn)“10”,表示已溢出,即結(jié)果小于-1。
  
  由此可以得出如下結(jié)論:
  
  1. 當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的二符號(hào)位相異時(shí),表示溢出;相同時(shí),表示未溢出。故溢出邏輯表達(dá)式為V=Sf1⊕Sf2,其中Sf1和Sf2分別為最高符號(hào)位和第二符號(hào)位。此邏輯表達(dá)式可用異或門實(shí)現(xiàn)。
  
  2. 模4補(bǔ)碼相加的結(jié)果,不論溢出與否,最高符號(hào)位始終指示正確的符號(hào)。
  
  第二種溢出檢測(cè)方法是采用單符號(hào)位法。從例1和例2中看到,當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。故溢出邏輯表達(dá)式為V=Cf⊕Co,其中Cf為符號(hào)位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的進(jìn)位。此邏輯表達(dá)式也可用異或門實(shí)現(xiàn)。
  
  在定點(diǎn)機(jī)中當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏輯電路自動(dòng)檢查出溢出,并進(jìn)行中斷處理。

非常好我支持^.^

(510) 97.7%

不好我反對(duì)

(12) 2.3%

( 發(fā)表人:admin )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?