运算方法与运算部件课件

上传人:我*** 文档编号:141313517 上传时间:2020-08-06 格式:PPT 页数:46 大小:1.10MB
返回 下载 相关 举报
运算方法与运算部件课件_第1页
第1页 / 共46页
运算方法与运算部件课件_第2页
第2页 / 共46页
运算方法与运算部件课件_第3页
第3页 / 共46页
运算方法与运算部件课件_第4页
第4页 / 共46页
运算方法与运算部件课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《运算方法与运算部件课件》由会员分享,可在线阅读,更多相关《运算方法与运算部件课件(46页珍藏版)》请在金锄头文库上搜索。

1、运算方法与运算部件,定点运算,郑州大学软件学院,2,定点运算,郑州大学软件学院,3,移位运算,计算机中小数点位置是约定的,当对计算机中的数进行左右移操作时,相当于对其进行了相应的乘除运算 十进制:100左移一位成为1000,相当于乘以10;右移两位为1,相当于除以100=102 二进制:1101=13,左移一位,低位补什么?右移一位,低位补什么?,机器数移位后空出的位置补0还是1, 取决于该数是有符号数还是无符号数 对有符号数的移位称为算术移位, 对无符号数的移位称为逻辑移位,郑州大学软件学院,4,移位运算,算术移位规则 移位后符号位不变 正数:移位后的空位均用 0 补足 负数:原码补 0 ,

2、反码补 1,补码左 0 右1(左移时空位补0,右移时空位补1),郑州大学软件学院,5,移位运算,算术移位例1 设机器字长为8位(含1位符号位),将十进制数26的原、反、补码分别左、右移一位和两位后的结果及其对应真值,并分析结果的正确性。 解:26=11010B,26原=0,0011010,+ 6,0,0000110,+13,0,0001101,+104,0,1101000,+ 52,0,0110100,+26,0,0011010,移位前,A原=A补=A反,对应的真值,机 器 数,移位操作,左移一位,左移两位,右移一位,右移两位,正数移位后符号位均不变,但左移后最高位丢失1时,结果出错;右移后最

3、低位丢1时,精度降低,若对此数左移三位,结果如何?,郑州大学软件学院,6,移位运算,算术移位例1 设机器字长为8位(含1位符号位),将十进制数-26的原、反、补码分别左、右移一位和两位后的结果及其对应真值,并分析结果的正确性。 解:-26=-11010B,26原=1,0011010, 6,1,0000110, 13,1,0001101, 104,1,1101000, 52,1,0110100, 26,1,0011010,移位前,原码,左移一位,左移两位,右移一位,右移两位,负数原码移位后,前后空位均补 0,郑州大学软件学院,7,移位运算, 6,1,1111001, 13,1,1110010,

4、104,1,0010111, 52,1,1001011, 26,1,1100101,移位前, 7,1,1111001, 13,1,1110011, 104,1,0011000, 52,1,1001100, 26,1,1100110,移位前,补码,反码,左移一位,左移两位,右移一位,右移两位,左移一位,左移两位,右移一位,右移两位,负数反码移位后,前后空位均补 1,负数补码移位后,后空补 0,前空补1,各种码制的负数移位后符号位均不变 负数原码左移后最高位丢失1时,结果出错;右移后最低位丢1时,精度降低 负数补码左移后最高位丢失0时,结果出错;右移后最低位丢1时,精度降低 负数反码左移后最高位丢

5、失0时,结果出错;右移后最低位丢0时,精度降低,郑州大学软件学院,8,移位运算,算术移位的硬件实现,(a)真值为正,(b)负数的原码,(c)负数的补码,(d)负数的反码,郑州大学软件学院,9,逻辑移位,逻辑移位规则 逻辑左移时,高位丢弃,低位补0 逻辑右移时,低位丢弃,高位补0 eg:01010011,逻辑左移为10100110 算术左移为00100110 10110010,逻辑右移为01011001 (视为补码)算术右移为11011001 为避免算术左移时丢失有效位,通常在状态寄存器中指定一位存放算术左移时移出的进位信息,郑州大学软件学院,10,知识回顾,数制数值的处理 定点数小数点问题 有

6、符号数符号问题 码制 原码解决了负数问题,但运算复杂 补码解决了负数运算问题 定点移位运算帮助解决乘除问题,郑州大学软件学院,11,定点加减运算,郑州大学软件学院,12,1、补码加法 两个补码表示的数相加,符号位参加运算,且两数和的补码等于 两数补码之和。 即: X+Y 补= X 补+ Y 补 2、补码减法 原则上讲: X-Y 补= X 补 - Y 补 可见需要一个减法器,而现在只有加法器,如何得到 X-Y 补呢? 我们可以根据补码加法公式推出: X-Y 补= X +(-Y)补= X 补+ -Y 补 这样,减法的问题就归结到如何求 -Y 补的问题了。 知识回顾: -Y 补 = / Y 补 +1

7、 即, -Y 补 等于 Y 补连同符号位在内求反加1。,补码定点加、减运算,郑州大学软件学院,13,例1、Y=0.1010 Y补 = 0.1010 -Y 补 = 1.0110 例2、Y= - 0.1010 Y补 = 1.0110 -Y 补 = 0.1010 例3、已知 X 补 = 0.0010,Y补 = 1.1010 求 X-Y 补 = ? 解: X 补 = 0.0010 +) -Y补 = 0.0110 X-Y 补 = 0.1000 这就是运算求得的正确结果。,补码定点加、减运算,郑州大学软件学院,14,例4、已知 X 补 = 1.1011,Y补 = 0.0110 求 X-Y 补 = ? 解:

8、 X 补 = 0.0010 +) -Y补 = 1.1010 Y补 是正数, -Y补 变成一负数 X-Y 补 = 11.0101 以2为模的情况下,符号位的进位1在机器中将会自动舍弃, 故得出的就是正确的结果 X-Y 补 。,补码定点加、减运算,郑州大学软件学院,15,溢出的产生 例1: X 补 = 0.1011 +) Y 补 = 0.0111 X+Y 补 = 1.0010 例2: X 补 = 1.0101 +) Y补 = 1.1001 X+Y 补 = 0.1110,从例1例2中看出,两个正数相加,结果是一负数(符号位为1), 而两个负数相加,结果是一个正数(符号位为0),显然结果错误。,溢出及

9、其检测方法,郑州大学软件学院,16,溢出原因分析:寄存器的位数一旦确定下来,就有了容量的限制, 数值表示的范围就固定了。 如果运算过程中数值位超出了机器允许表示的范围, 进入符号位上,造成符号性质的改变,就产生溢出。,符号位,数值位,显然,机器允许表示范围应该为 +127 到 -128 之间, 大于 127 称为上溢或正溢出, 小于-128 称为下溢或负溢出。,溢出及其检测方法,郑州大学软件学院,17,2)溢出的判断方法 计算机只能判断溢出,不能处理溢出! 下面介绍计算机判断溢出的方法。 方法一: 设 X补= X0 X1 X2 Xn, Y补= Y0 Y1 Y2 Yn, 其和(或差)为 S 补

10、= S0 S1 S2 Sn。 则溢出条件为: V = X0 Y0 /S0 + /X0 /Y0 S0,溢出及其检测方法,郑州大学软件学院,18,00.1001 + 00.0011 00.1100 不溢出,11.0111 + 11.1101 11.0100 不溢出,00.1101 + 00.1001 01.0110 溢出,11.0011 + 11.0111 10.1010 溢出,观察下列算式:,可见,当结果两个符号位的值不一致时,表示溢出, 若设两符号位 Sf1 和 Sf2,则:V = Sf1 Sf2,2)溢出的判断方法 方法二:采用变形补码(双符号位补码),比喻:比如第一道河坝拦不住水了,就再设

11、一道。,这种方法好,但是增加一个符号位后, 数据表示范围缩小了,最好改进只设置一个符号位!,溢出及其检测方法,郑州大学软件学院,19,2)溢出的判断方法 方法三:采用双高位判断 数值部分最高位产生的进位为Cs;(设置一触发器) 符号位部分向上产生的进位为Cf。 (设置一触发器) 溢出条件公式:V = Cs Cf,0.1001 + 0.0011 0.1100 不溢出,1.0111 + 1.1101 1.0100 不溢出,0.1101 + 0.1001 1.0110 溢出,1.0011 + 1.0111 0.1010 溢出,Cf=0 Cs=0,Cf=1 Cs=1,Cf=0 Cs=1,Cf=1 Cs

12、=0,溢出及其检测方法,郑州大学软件学院,20,设两寄存器中存放A,B两数,进行运算. A寄存器:A0 . A1 A2 An B寄存器: B0 . B1 B2 Bn 则: A+ B = A0 . A1 A2 An + B0 . B1 B2 Bn A - B = A0 . A1 A2 An + B0 . B1 B2 Bn + 0.0001,且: A+B A AB A,累加器: 硬件要支持软件,软件中有循环程序设计, 所以要设计累加器。 SUM= 1+2+3+4+5+100 S=S+X,补码定点加法器, X 补, Y 补, X+Y 补= X 补+ Y 补, X-Y 补= X 补+ / Y 补 +1

13、,郑州大学软件学院,21,四片4位ALU电路可组成16位ALU。(1110 1101 0101 0001) 片内进位是快速的,但片间进位是逐片传递的,形成F0F15时间长。,知识回顾:算术逻辑单元,把16位ALU中的每四位作为一组,用类似四位超前进位加法器 “位间快速进位” 的形成方法来实现16位ALU(由四片ALU组成)中 的 “组间快速进位”,那么就能得到16位快速ALU。,郑州大学软件学院,22,CPA,2.3、补码定点加法器,+A,+B,- B,实现加法运算的逻辑示例,A+B A AB A,郑州大学软件学院,23,定点乘法运算,注释: 前面讲的内容帮助同学们打开怎么设计运算器的思路,分

14、析怎么样的数的表示方法对运算有利,怎么样的数的表示方法对运算不利。 硬件设计时,还要考虑怎样提高硬件运算速度。所以,以后讲的乘法除法要逐渐从怎么样提高计算机的运算速度来考虑。,郑州大学软件学院,24,乘法运算可以通过硬件实现,也可以通过软件来实现,硬件实现乘法是以加法器为基础逐步累加而成。 1)、软件方法:通过乘法子程序在加/减运算器中实现。 该方法经济,但是运算速度慢。 2)、硬件方法: A、在加/减法运算器中增加一些移位和控制部件来实现。 这种方法在早期的计算机采用。 B、随着大规模集成电路的发展,现在设计了阵列乘法器。 设置专门的多位乘法部件,适用于高速大中型计算机。,定点乘法运算,郑州

15、大学软件学院,25,根据数的表示方法,乘法器又有: 原码乘法器,补码乘法器。 原码乘法器实现乘法运算方法简单, 补码乘法器实现加/减运算比较简单。 所以在以加/减运算为主的机器中多采用补码乘法器。 下面分别介绍原码、补码乘法。,定点乘法运算,郑州大学软件学院,26,原码一位乘法基本上是从手算演变过来,符号位单独处理。 两个原码表示的数相乘,它的运算规则是: 乘积的符号位通过两数的符号按异或运算得到, 乘积则是两个操作数的绝对值相乘之积。 运算方法与普通的十进制小数乘法相类似,对二进制更为简单。 设 n 位被乘数X 和 乘数Y 用定点小数表示(定点整数同样) 被乘数: X原 = Xf . Xn-1 X1 X0 乘数: Y原 = Yf . Yn-1 Y1 Y0 乘积符号: Xf Yf 乘积:|X| |Y| Z原= ( Xf Yf ) + (0.Xn-1 X1 X0) (0.Yn-1 Y1 Y0) 于是原码与原码相乘就变成如何进行两个正数相乘的问题了。,原码一位乘法,郑州大学软件学院,27,设 X = 0.1101, Y = - 0.1011。 让我们先用习惯的笔算方法求

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号