《计算机接口技术及应用》课件-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

提交评论