《計算機(jī)接口技術(shù)及應(yīng)用》課件-1.10有符號二進(jìn)制數(shù)的溢出_第1頁
《計算機(jī)接口技術(shù)及應(yīng)用》課件-1.10有符號二進(jìn)制數(shù)的溢出_第2頁
《計算機(jī)接口技術(shù)及應(yīng)用》課件-1.10有符號二進(jìn)制數(shù)的溢出_第3頁
《計算機(jī)接口技術(shù)及應(yīng)用》課件-1.10有符號二進(jìn)制數(shù)的溢出_第4頁
《計算機(jī)接口技術(shù)及應(yīng)用》課件-1.10有符號二進(jìn)制數(shù)的溢出_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

微機(jī)原理及應(yīng)用第一章認(rèn)識二進(jìn)制第十講有符號二進(jìn)制數(shù)的溢出同學(xué)們好,下面我們來認(rèn)識一下數(shù)制的概念有符號二進(jìn)制數(shù)的溢出我們要如何判斷有符號二進(jìn)制數(shù)的運(yùn)算是否溢出了呢?如何判斷有符號二進(jìn)制數(shù)的運(yùn)算是否溢出?還是基于我們前面提出的準(zhǔn)則,就是當(dāng)兩個有符號數(shù)進(jìn)行相加或相減運(yùn)算的時候,如果運(yùn)算的結(jié)果超出了它可以表示數(shù)的范圍,那么就會產(chǎn)生溢出,有符號二進(jìn)制數(shù)的溢出溢出判斷有符號數(shù)運(yùn)算的溢出判斷兩個有符號數(shù)相加或相減時,若運(yùn)算結(jié)果超出可表達(dá)范圍,則產(chǎn)生溢出判斷有符號二進(jìn)制數(shù)運(yùn)算是否溢出當(dāng)兩個有符號數(shù)進(jìn)行相加或相減運(yùn)算,如運(yùn)算結(jié)果超出了它可以表示數(shù)的范圍,就會產(chǎn)生溢出。還記得有符號二進(jìn)制數(shù)能夠表示的值的范圍是多少嗎?有符號二進(jìn)制數(shù)能夠表示的值的范圍是多少?如果是八比特,他能夠表示的值的范圍是-128到正的127,一旦運(yùn)算的結(jié)果超出了這個范圍,就會產(chǎn)生溢出8

bit運(yùn)算結(jié)果超出這個范圍,就會產(chǎn)生溢出-128127有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷異或即狀態(tài)不相同0101前人總結(jié)了更簡便判斷方法有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷最高位進(jìn)位和次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷異或0011邏輯運(yùn)算兩個值不相同,結(jié)果為1有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷異或0011最高位進(jìn)位次高位進(jìn)位即狀態(tài)不相同,結(jié)果為1,則有符號數(shù)的運(yùn)算結(jié)果溢出即狀態(tài)不相同有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷即狀態(tài)不相同異或0011100000101001100001+最高位進(jìn)位次高位進(jìn)位01有符號數(shù)運(yùn)算的溢出判斷溢出的判斷方法:若:最高位進(jìn)位狀態(tài)

次高位進(jìn)位狀態(tài)=1,則結(jié)果溢出有符號二進(jìn)制數(shù)的溢出溢出判斷即狀態(tài)不相同異或0111100001101001100001+0110我們把這兩種情況列舉一下,并且開動我們的腦筋,想像一下。有符號數(shù)運(yùn)算的溢出判斷1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正有符號二進(jìn)制數(shù)的溢出溢出判斷溢出1xxxxxxx1xxxxxxx+10xxxxxxx第一種情況,最高位的進(jìn)位狀態(tài)是一,而次高位的進(jìn)位狀態(tài)是零,大家可以想象一下這是什么情況,有符號數(shù)運(yùn)算的溢出判斷1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正有符號二進(jìn)制數(shù)的溢出溢出判斷溢出溢出判斷1xxxxxxx1xxxxxxx+10xxxxxxx如果次高位沒有進(jìn)位,但是最高位有進(jìn)位,那一定是兩個負(fù)數(shù)在相加,但是相加以后發(fā)生了什么情況呢?就是結(jié)果是個正數(shù)。這種情況肯定溢出了,結(jié)果都錯了嘛。有符號數(shù)運(yùn)算的溢出判斷1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正有符號二進(jìn)制數(shù)的溢出溢出判斷溢出溢出判斷0xxxxxxx1xxxxxxx+10xxxxxxx次高位沒有進(jìn)位最高位有進(jìn)位兩個負(fù)數(shù)相加,結(jié)果為正溢出另外一種情況,就是次高位的進(jìn)位狀態(tài)為一,但是最高位的進(jìn)位狀態(tài)為零,這種情況是什么情況呢?溢出判斷0xxxxxxx0xxxxxxx+1xxxxxxx有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷溢出0xxxxxxx0xxxxxxx+1xxxxxxx1如果次高位有進(jìn)位,但是最高位又沒進(jìn)位,那說明原本,最高位上是兩個0相加,這樣的話,次高位有進(jìn)位,但是最高位才不會有進(jìn)位,但是,由于次高位有進(jìn)位,所以計算完以后,最高位上是1.溢出判斷0xxxxxxx0xxxxxxx+1xxxxxxx有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷溢出0xxxxxxx0xxxxxxx+1xxxxxxx1兩個正數(shù)相加,結(jié)果為負(fù)兩個0相加1最高位沒有進(jìn)位溢出相加過程中結(jié)果超出可表達(dá)范圍,數(shù)的符號發(fā)生變化溢出下面我們分別舉例說明第一種情況,最高位進(jìn)位狀態(tài)為一,次高位進(jìn)位狀態(tài)為零,就是兩個負(fù)數(shù)相加結(jié)果為正的情況,1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加結(jié)果為正比如我們要計算10011100和他自己相加的結(jié)果,這是兩個負(fù)數(shù),因為它的最高位為一,那么這兩個負(fù)數(shù)在相加以后的結(jié)果就是它的最高位向更高位產(chǎn)生了一個進(jìn)位,但是它的次高位向最高位并沒有進(jìn)位1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況10011100+10011100=?負(fù)數(shù)負(fù)數(shù)相加后最高位向更高位產(chǎn)生進(jìn)位,次高位向最高位沒有進(jìn)位運(yùn)算的結(jié)果是00111000也就是兩個負(fù)數(shù)相加運(yùn)算的結(jié)果是正數(shù)這時我們說他產(chǎn)生了溢出1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況10011100+10011100=正數(shù)溢出我們把這個數(shù)轉(zhuǎn)化成十進(jìn)制數(shù),再來仔細(xì)的看一下這兩相加的數(shù)分別是負(fù)100,負(fù)100加上負(fù)100,結(jié)果是負(fù)200,1最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況10011100+10011100100111000-100D-100D+56D-200D但是負(fù)200這個值已經(jīng)超過了八比特的補(bǔ)馬能夠表示的范圍,8比特數(shù)的補(bǔ)碼最小能表示-128,負(fù)200小于負(fù)128,所以用八個比特是沒有辦法去表示負(fù)200這個值的,所以會產(chǎn)生溢出,溢出后結(jié)果變?yōu)?561最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況+56D-128>128-200D8bit無法表示負(fù)200溢出溢出后結(jié)果變?yōu)?561最高位進(jìn)位狀態(tài)=1,次高位進(jìn)位狀態(tài)=0兩個負(fù)數(shù)相加,結(jié)果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進(jìn)位、舍掉兩個負(fù)數(shù)相加,結(jié)果為正溢出-100D-100D+56D第一種情況10011100+10011100100111000-100D-100D+56D+56D第二種情況是次高位的進(jìn)位狀態(tài)是一,最高位的進(jìn)隊狀態(tài)是零,這種情況產(chǎn)生錯誤的原因是兩個正數(shù)相加結(jié)果為負(fù)數(shù)第二種情況次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0正數(shù)相加,結(jié)果為負(fù)看一下這個例子,假設(shè)要計算01100100和它自己相加的結(jié)果,第二種情況01100100+01100100=?這兩個數(shù)是正數(shù),有符號數(shù)運(yùn)算的溢出判斷2有符號二進(jìn)制數(shù)的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數(shù)相加,結(jié)果為負(fù)溢出+100D+100D-56D第二種情況01100100+01100100=?正數(shù)第二種情況但是相加后的結(jié)果是11001000,結(jié)果為負(fù),所以我們說它產(chǎn)生了溢出。有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數(shù)相加,結(jié)果為負(fù)溢出+100D+100D-56D100111000負(fù)溢出01100100+01100100=第二種情況我們把它再轉(zhuǎn)換成十進(jìn)制來仔細(xì)看一下,這是正100和正100相加的結(jié)果,本來結(jié)果是正的200,有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數(shù)相加,結(jié)果為負(fù)溢出+100D+100D-56D01100100

+01100100-100D-100D200D

100111000第二種情況但是正200超出了8比特的補(bǔ)馬能夠表示的范圍,8比特的補(bǔ)碼能表示的最大值是正的127,那正200大于正127,所以會導(dǎo)致溢出,有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數(shù)相加,結(jié)果為負(fù)溢出+100D+100D-56D127>127溢出200D8bit溢出以后的結(jié)果是負(fù)的56有符號數(shù)運(yùn)算的溢出判斷2次高位進(jìn)位狀態(tài)=1,最高位進(jìn)位狀態(tài)=0兩個正數(shù)相加,結(jié)果為負(fù)有符號二進(jìn)制數(shù)的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數(shù)相加,結(jié)果為負(fù)溢出+100D+100D-56D第二種情況01100100

+01100100-100D-100D

100111000-56D其實這個現(xiàn)象也很好解釋,我們假設(shè)有這樣的一個8比特有符號數(shù)的一個轉(zhuǎn)換環(huán)有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-22002008

bit有符號數(shù)轉(zhuǎn)換環(huán)它能表示的值是0~127,負(fù)數(shù)的話是從負(fù)一到負(fù)128,有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-2200200126127-128-127210-1-28

bit有符號數(shù)轉(zhuǎn)換環(huán)從零開始每加1就標(biāo)記一個數(shù),一直加到126,再加1到127,127再加一就是負(fù)的128-128再加1就是負(fù)的127一直加到負(fù)一,再加一的話,結(jié)果就是零,這樣這個環(huán)就閉合了有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-2200200126127-128-127210-1-2有符號數(shù)轉(zhuǎn)換環(huán)0+11~126127+1-128+1-127~-1+1閉合當(dāng)我們要用這個環(huán)計數(shù)的時候,如果我們想讓他去表示200會出現(xiàn)什么現(xiàn)象呢?有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-2200200126127-128-127210-1-2如果想表示200會出現(xiàn)什么現(xiàn)象?如果用他表示200,當(dāng)他加到127的時候,再往下加他就會加到負(fù)的128,我們用200減去127,還剩73,那么就是說從-128還要再加72才行,-128+72等于-56,剛好跟我們運(yùn)算的結(jié)果是相同的,也就是說溢出的結(jié)果其實是什么呢,就是它會繼續(xù)繞著這個環(huán)計算,只是計算的結(jié)果不對了有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-2200200126127-128-127210-1-2有符號數(shù)轉(zhuǎn)換環(huán)200127+1-128—=73-128+72=-56溢出結(jié)果其實是它會繼續(xù)繞著環(huán)計算,只是計算結(jié)果不一樣同樣的道理,同學(xué)們可以自己解釋一下為什么-200溢出后的結(jié)果是+56.有符號數(shù)運(yùn)算的溢出判斷有符號二進(jìn)制數(shù)的溢出溢出判斷8比特有符號數(shù)轉(zhuǎn)換環(huán)011262127-128-127-1-2200為什么-200溢出后結(jié)果是+56?我們還要注意以下兩點,第一個乘法不涉及溢出的問題這是因為匯編語言里面進(jìn)行乘法的時候,都會用一個更大的字長的單元去保存乘積,就是說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論