《计算机接口技术及应用》课件-1.5无符号数的运算和溢出_第1页
《计算机接口技术及应用》课件-1.5无符号数的运算和溢出_第2页
《计算机接口技术及应用》课件-1.5无符号数的运算和溢出_第3页
《计算机接口技术及应用》课件-1.5无符号数的运算和溢出_第4页
《计算机接口技术及应用》课件-1.5无符号数的运算和溢出_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用第一章认识二进制第五讲无符号数的运算和溢出下面我们来学习一下二进制的算术运算无符号数的运算和溢出二进制的算术运算包括加、减、乘、除二进制算术运算+×-÷但是在计算机中为了简化设计,并没有加、减、乘、除四种硬件电路,而是通过加法电路来实现了其他的各种运算计算机+×-÷加法电路加法就不用说了,既然是加法器,它的功能就是实现几个数的和加法电路功能:实现几个数的和加法器XYX+YX+Y=?再来看减法电路,我们只要将算式稍微化简一下,就可以得出,X减Y等于X加上-Y,因此,减法电路本质上就是加法电路,只是输入的数是X和-Y。这里的-Y可以通过补码的来表示,补码的好处就是可以直接计算,后续我们讲解补码的时候会提到这一点。减法电路X-Y=?X+(-Y)=?加法器X-YX-Y补码直接计算再来看乘法电路。乘法电路我们是通过加法电路结合移位电路来实现的乘法电路加法电路移位电路向左移动一位数值=原数值基础上*2向左移动两位数值=原数值基础上*4移位电路:输入值*2的指数次方运算在讲解之前,同学们要知道在二进制中,我们把数值向左移动一位的结果就是原数值的基础上乘以了2,左移两位就是乘以了4,这个移动的过程可以用移位电路来实现,移位后相当于对输入值进行了乘以2的指数次方的运算。知道了这一特性,我们就可以解释一下乘法电路的设计了。假设我们要计算X乘以Y,那么这里的Y我们可以把它分解成2的指数次方的形式,其实二进制的写法本身就说明了Y是几个2的指数次方的数之和。乘法电路X*Y=?X*(Y1+Y2)=?Y是几个2的指数次方的数之和然后我们对X分别进行相应的左移,最后把移位的结果加起来就是乘法的结果。乘法电路X*Y=?X*(Y1+Y2)=?加法器X*YXX移位(n1)移位(n2)X*Y1X*Y2最后来看一下除法电路。在除法运算中,我们要获得的是商和余数。通过对算式进行简单的化简,你就会发现它其实还是一个移位和加法电路。我们要求的商其实就是对除数要如何移位的问题。我们要求的余数,其实就是被除数减去移位后的除数的结果。除法电路除法运算商余数通过对算式进行简单的化简,你就会发现它其实还是一个移位和加法电路。除法电路X/Y=?X=aY+b=(a1+a2)Y+bX-(a1+a2)Y=b加法器-Yb移位(a1)-Y移位(a2)-Y*a1-Y*a2X商余数我们要求的商其实就是对除数要如何移位的问题。我们要求的余数,其实就是被除数减去移位后的除数的结果。好,讲完了加、减、乘、除,我们再回过头来总结一下。除法电路商余数除数要如何移位除数减去移位后除数的结果好,讲完了加、减、乘、除,我们再回过头来总结一下。这四种运算用加法和移位电路实现而不是各自设计各自的电路,这里体现的是产品设计中的精简的要求。加法电路移位电路精简要求我们要把产品设计的小型化,就要充分考虑它的硬件实现。因为每个模块设计出来它都会在硬件中占有一部分空间,那如果这个模块它可以实现更多的功能,取代其他的模块,那么产品的体积就可以设计得更小了。另一方面,我们也看到,硬件方面的精巧设计与软件是分不开的。通过化简我们知道了这样做就可以用加法电路设计出其他的电路,这是经过理论推导的,不是无本之木。硬件的精巧设计与软件分不开用加法电路设计出其他电路是经过理论推导在实际产品开发的过程中,硬件和软件其实是相辅相成的,硬件是程序最底层的执行者,如果硬件功能非常强大,那么它就可以支撑更复杂的软件算法,如果硬件功能不行,那么在其上应用的软件会处处受限。所以,对于同学们来说,硬件电路和软件编程都要好好学,将来会受益。硬件软件执行者硬件功能强大:支撑更复杂的软件算法硬件功能不行:应用的软件会处处受限我们再回到二进制的算术运算。在进行加、减、乘、除的运算时,老师还要再特别提醒一下:01加02减04除03乘算术运算04除进行加法运算时,要注意可能会有进位,尤其是最高位向更高位的进位,它会产生什么?对,溢出,产生溢出会影响计算结果,这个要特别注意。进行减法运算时,要注意可能会有借位,尤其要注意的是最高位向更高位的借位,同样会导致溢出。乘法运算要注意的问题是,通常乘法运算的结果会比乘数和被乘数的字长长,01加02减1+1=0(有进位)0-1=1(有借位)算术运算注意溢出注意溢出03乘00001011×0100=00101100B所以要特别注意用多大的字长来保存结果,关于这一点,请同学们留意我们的汇编语言是如何进行乘法运算的。01加02减1+1=0(有进位)0-1=1(有借位)算术运算注意溢出注意溢出04除03乘00001011×0100=00101100B注意注意保存结果的字长留意汇编语言如何进行乘法运算除法运算要注意的是,01加02减1+1=0(有进位)0-1=1(有借位)算术运算注意溢出注意溢出03乘00001011×0100=00101100B04除00001011÷0100=00000010B商=00000010B余数=11B第一除数不能是0,否则就无法计算出结果;第二除法的结果有商和余数两个部分。要注意将这两个内容都保存下来。关于这两点,同学们可以留意,计算机是如何处理除0的运算,以及商和余数分别保存在什么位置。01加02减03乘1+1=0(有进位)0-1=1(有借位)算术运算注意溢出注意溢出00001011×0100=00101100B04除注意除数不能是0结果有商和余数两个部分留意计算机如何处理除0的运算商和余数分别保存在什么位置00001011÷0100=00000010B商=00000010B余数=11B下面来看一下无符号数的表示范围,对于一个n比特的无符号数来说,它表示的范围是0~2的n次方减1,比如当n=8的时候,他表示的范围就是0~255,如果我们的运算结果超出了这个范围,就会产生溢出无符号数的表示范围范围:0~2的n次方减1n比特的无符号数范围:0~255n=8运算结果超出范围则产生溢出判断无符号数是否溢出的方法,就是当它的最高位向更高位有进位或借位的时候,它就会产生溢出,判断无符号数是否溢出的方法1011011101001101+100000100最高位向更高位有进位或借位时则产生溢出举个例子,比如我们要算183和77的和,它的计算结果是260,由于八个比特位能够表示的最大正数是255。而260比255大,所以八个比特位是表示不了260的,至少要用九个比特位才能表示260这个数判断无符号数是否溢出的方法1011011101001101+10000010018377+260八个比特位=255>255九个比特位因此最高位就会向更高位有进位,就是老师标注的地方。这个进位位不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论