资源描述:
《第三章 运算方法和运算部件(3-1,2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、原稿:武大计算机学院改编:武汉东湖学院《计算机组成原理》课程小组2011.9《计算机组成原理》——武汉东湖学院本科生课程教学第三章运算方法和运算部件①补码和反码的加减法运算②定点数与浮点数③二进制乘法运算④二进制除法运算⑤浮点数的运算方法⑥运算器组成⑦数据校验码⑧小结与练习一.定点数的加减法运算(一)定点数加减法实现方案二进制加法是实现算术运算的基础,采用补码方案时,加减法可以用统一的方式处理。因此运算器的核心也就是加法器的设计。1、补码加减法运算法则1:[X]补+[Y]补=[X+Y]补两补码数相加,符号位与码值一起参加运算,符号位相加后如果有进位,则该位
2、数字舍弃。下面分四种情况来证明上述补码加法公式:一.定点数的加减法运算证明条件是:
3、X
4、<1,
5、Y
6、<1,
7、X+Y
8、<1。(1)X>0,Y>0,则X+Y>0;两正数相加,和一定是正数,与原码相同。根据补码的定义可得此结论。[X]补=X〔Y〕=Y所以,[X]补+[Y]补=X+Y=[X+Y]补(MOD2)例,X=+0.1001,Y=+0.0101,X+Y=?[X]补01001+[Y]补0010101110补一.定点数的加减法运算(2)X>0,Y<0,则X+Y>0或X+Y<0;相加两数一正一负,和有正负两种可能。根据补码的定义可得:[X]补=X,[Y]补=2+Y
9、所以,[X]补+[Y]补=X+2+Y=2+(X+Y)①当X+Y>0时,2+(X+Y)>2,进位2必舍弃丢失,又因为(X+Y)>0,所以[X]补+[Y]补=X+Y=[X+Y]补(MOD2)②当X+Y<0时,2+(X+Y)<2,又因为(X+Y)<0,所以[X]补+[Y]补=2+(X+Y)=[X+Y]补(MOD2)一.定点数的加减法运算例,X=+0.1011,Y=-0.0101,X+Y=?[X]补=0.1011,[Y]补=1.1011[X]补0.1011+[Y]补1.1011(1)0.0110所以,X+Y=0.0110(3)X<0,Y>0,则X+Y>0或X+Y<
10、0;同(2)情况一样。一.定点数的加减法运算(4)X<0,Y<0,则X+Y<0;两相加的数都是负数,则其和也一定是负数。根据补码的定义可得:[X]补+[Y]补=(2+X)+(2+Y)=2+(2+X+Y)=(2+X+Y)进位“2”丢失。又因为(X+Y)<0所以,[X]补+[Y]补=2+(X+Y)=[X+Y]补(MOD2)1.定点数的加减法运算例,[X]补=1.0111,[Y]补=1.1011[X]补1.0111+[Y]补1.1011(1)1.0010(符号位的进位丢弃)所以,(X+Y)补=1.0010X+Y=-0.1110由此可进一步推理出:法则2:[X-Y
11、]补=[X+(-Y)]补=[X]补+[-Y]补(MOD2)一.定点数的加减法运算2、补码定点加减法运算的实现P75图3.1为实现加法的逻辑图①实现加法时应提供以下控制信号:A→ALU,B→ALU,+,ALU→A②实现减法时应提供以下控制信号:_A→ALU,B→ALU,ALU+1,+,ALU→A注意:-[y]补=[-y]补=[[y]补]补;而[[y]补]补是将[y]补连同符号位一起“求反加1”。(Y)补:Y用补码表示-(Y)补:对Y求补一.定点数的加减法运算3.补码加减法运算的溢出判断方法由于机器数的位数通常是给定的且是有限的(如16位字长,32位字长等),
12、因此,数的表示范围一定是有限的,若两数进行加减运算的结果超出给定的允许取值范围,就会产生溢出。例,X=+0.1011,Y=+0.1001,X+Y=?[X]补0.1011+[Y]补0.10011.0100此时,两个正数相加的结果成为负数(符号为1),这显然是错误的,原因是产生了溢出。一.定点数的加减法运算又如,X=-0.1101,Y=-0.1011,X+Y=?[X]补1.0011+[Y]补1.01010.1000两个负数相加的结果成为正数(符号为0),这同样是错误的,原因也是产生了溢出。为判断溢出是否产生,可以采用两种检测方法。1)双符号位检测2)单符号位检
13、测一.定点数的加减法运算方法1):变形补码(双符号位)检测方法:每个操作数在运算时都采用两个符号位,正数用00表示,负数用11表示,两个符号位与码值一起参加运算;若运算结果的两个符号位的代码不一致时表示溢出,两个符号位代码一致时,表示没有溢出。这种变形的补码表示,又称模4补码表示方法,其定义为:[X]=X0<=X<14+X-1<=X<0一.定点数的加减法运算例1,X=+0.1011,Y=+0.1101,用模4补码运算判断x+y是否溢出[X]补00.1011+[Y]补00.1101(溢出时最高符号位永远是正确符号)01.1000符号位代码01,表示正溢出,表
14、明运算结果是大于允许取值范围的正数。例2,X=-0.1011,Y=