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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

bit運算結果超出這個范圍,就會產生溢出-128127有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

次高位進位狀態=1,則結果溢出有符號二進制數的溢出溢出判斷異或即狀態不相同0101前人總結了更簡便判斷方法有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

次高位進位狀態=1,則結果溢出有符號二進制數的溢出溢出判斷最高位進位和次高位進位狀態=1,則結果溢出有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

次高位進位狀態=1,則結果溢出有符號二進制數的溢出溢出判斷異或0011邏輯運算兩個值不相同,結果為1有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

次高位進位狀態=1,則結果溢出有符號二進制數的溢出溢出判斷異或0011最高位進位次高位進位即狀態不相同,結果為1,則有符號數的運算結果溢出即狀態不相同有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

次高位進位狀態=1,則結果溢出有符號二進制數的溢出溢出判斷即狀態不相同異或0011100000101001100001+最高位進位次高位進位01有符號數運算的溢出判斷溢出的判斷方法:若:最高位進位狀態

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

10011100

100111000

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

10011100

100111000

進位、舍掉兩個負數相加,結果為正溢出-100D-100D+56D第一種情況10011100+10011100=?負數負數相加后最高位向更高位產生進位,次高位向最高位沒有進位運算的結果是00111000也就是兩個負數相加運算的結果是正數這時我們說他產生了溢出1最高位進位狀態=1,次高位進位狀態=0兩個負數相加,結果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進位、舍掉兩個負數相加,結果為正溢出-100D-100D+56D第一種情況10011100+10011100=正數溢出我們把這個數轉化成十進制數,再來仔細的看一下這兩相加的數分別是負100,負100加上負100,結果是負200,1最高位進位狀態=1,次高位進位狀態=0兩個負數相加,結果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進位、舍掉兩個負數相加,結果為正溢出-100D-100D+56D第一種情況10011100+10011100100111000-100D-100D+56D-200D但是負200這個值已經超過了八比特的補馬能夠表示的范圍,8比特數的補碼最小能表示-128,負200小于負128,所以用八個比特是沒有辦法去表示負200這個值的,所以會產生溢出,溢出后結果變為+561最高位進位狀態=1,次高位進位狀態=0兩個負數相加,結果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

進位、舍掉兩個負數相加,結果為正溢出-100D-100D+56D第一種情況+56D-128>128-200D8bit無法表示負200溢出溢出后結果變為+561最高位進位狀態=1,次高位進位狀態=0兩個負數相加,結果為正溢出判斷10011100+10011100=?例10011100

10011100

100111000

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

01100100

11001000

兩個正數相加,結果為負溢出+100D+100D-56D第二種情況01100100+01100100=?正數第二種情況但是相加后的結果是11001000,結果為負,所以我們說它產生了溢出。有符號數運算的溢出判斷2次高位進位狀態=1,最高位進位狀態=0兩個正數相加,結果為負有符號二進制數的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數相加,結果為負溢出+100D+100D-56D100111000負溢出01100100+01100100=第二種情況我們把它再轉換成十進制來仔細看一下,這是正100和正100相加的結果,本來結果是正的200,有符號數運算的溢出判斷2次高位進位狀態=1,最高位進位狀態=0兩個正數相加,結果為負有符號二進制數的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數相加,結果為負溢出+100D+100D-56D01100100

+01100100-100D-100D200D

100111000第二種情況但是正200超出了8比特的補馬能夠表示的范圍,8比特的補碼能表示的最大值是正的127,那正200大于正127,所以會導致溢出,有符號數運算的溢出判斷2次高位進位狀態=1,最高位進位狀態=0兩個正數相加,結果為負有符號二進制數的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數相加,結果為負溢出+100D+100D-56D127>127溢出200D8bit溢出以后的結果是負的56有符號數運算的溢出判斷2次高位進位狀態=1,最高位進位狀態=0兩個正數相加,結果為負有符號二進制數的溢出溢出判斷01100100+01100100=?例01100100

01100100

11001000

兩個正數相加,結果為負溢出+100D+100D-56D第二種情況01100100

+01100100-100D-100D

100111000-56D其實這個現象也很好解釋,我們假設有這樣的一個8比特有符號數的一個轉換環有符號數運算的溢出判斷有符號二進制數的溢出溢出判斷8比特有符號數轉換環011262127-128-127-1-22002008

bit有符號數轉換環它能表示的值是0~127,負數的話是從負一到負128,有符號數運算的溢出判斷有符號二進制數的溢出溢出判斷8比特有符號數轉換環011262127-128-127-1-2200200126127-128-127210-1-28

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

溫馨提示

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

評論

0/150

提交評論