运算方法幻灯片

上传人:爱****1 文档编号:929944 上传时间:2017-05-22 格式:PPT 页数:135 大小:6.27MB
返回 下载 相关 举报
运算方法幻灯片_第1页
第1页 / 共135页
运算方法幻灯片_第2页
第2页 / 共135页
运算方法幻灯片_第3页
第3页 / 共135页
运算方法幻灯片_第4页
第4页 / 共135页
运算方法幻灯片_第5页
第5页 / 共135页
点击查看更多>>
资源描述

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

1、第三章 第二部分,2,第4章 运算方法与运算器,定点数的加减运算及实现,4.1,定点运算器的组成与结构,定点数的乘法运算及实现,4.2,定点数除法运算及实现,4.3,4.4,浮点运算及运算器,4.5,浮点运算器举例,4.6,本章小结,3,4.1 定点数的加减运算及实现,补码加减运算与运算器,机器数的移位运算,移码加减运算与判溢,十进制加法运算,4,一、补码加减运算与运算器,补码加减运算方法,补码加减运算的溢出判断,二,补码加减运算器的实现,三,一,5,1、补码加减运算方法,补码的加减运算的公式是:X+Y补 = X补 + Y补X-Y补 = X补 + -Y补特点:使用补码进行加减运算,符号位和数值

2、位一样参加运算。补码的减法可以用加法来实现,任意两数之差的补码等于被减数的补码与减数相反数的补码之和 。,6,求补运算:Y补 -Y补,求补规则:将Y补包括符号位在内每一位取反,末位加1。若Y补 = Y0,Y1Yn ,则:若Y补 = Y0.Y1Yn ,则:,例: X补 =0.1101,则: X补 = ? Y补 =1.1101,则: Y补 = ?,1.0011,0.0011,7,补码加减运算举例,例:已知X=+1011,Y=-0100,用补码计算X+Y和X-Y。写出补码: X补 =0,1011 Y补 =1,1100 -Y补 =0,0100 计算:,0,1011, 1,1100,0,0111,XY补

3、 = 0, 0111,0,1011, 0,0100,0,1111,XY补 = 0, 1111,8,2、补码加减运算的溢出判断,当运算结果超出机器数的表示范围时,称为溢出。计算机必须具备检测运算结果是否发生溢出的能力,否则会得到错误的结果。对于加减运算,可能发生溢出的情况:同号(两数)相加,或者异号(两数)相减。确定发生溢出的情况:正数相加,且结果符号位为1;负数相加,且结果符号位为0;正数负数,且结果符号位为1;负数正数,且结果符号位为0;,9,常用的判溢方法(补码加减运算),(1)单符号位判溢方法2 当最高有效位产生的进位和符号位产生的进位不同时,加减运算发生了溢出。VC1Cf(2)双符号位

4、判溢方法X和Y采用双符号位补码参加运算,正数的双符号位为00,负数的双符号位为11;当运算结果的两位符号Sf1 Sf2不同时(01或10),发生溢出。 V Sf1 Sf2= Xf Yf Cf Sf Sf1 Sf2=01,则正溢出;Sf1 Sf2=10,则负溢出。,10,双符号位判溢方法举例,例:用补码计算X+Y和X-Y (1)X=+1000,Y=+1001(2)X=-1000,Y=1001,Sf1 Sf2=01,正溢出,Sf1 Sf2=11,无溢出,Sf1 Sf2=00,无溢出,Sf1 Sf2=10,负溢出,11,二进制加法器,由真值表可的全加器输出Fn和进位输出 Cn1的表达式为:,化简可得

5、:Fn = Xn Yn CnCn1 = XnYn + (Xn Yn)Cn,12,一位全加器逻辑电路,一位全加器逻辑框图,13,四位二进制加法器,由4个全加器串连构成串行进位加法器,14,四位二进制并行进位加法器,在4个全加器基础上进行改造,以便并行产生进位,构成并行进位加法器。,15,四位二进制并行进位加法器,可以完成加法,16,补码加减法,根据算术运算规则:a-b补=a补+-b补-b的补码为:将b补的各位求反,并加1。由此,我们可以用加法器实现减法。,加法器,17,将加法和减法组合,给定控制命令C=0,则ALU完成加法a+b; C=1,完成减法a-b。可以用选择器实现如下:,18,补码加减运

6、算器的实现,核心部件:一个普通的二进制并行加法器。A:累加器,存放X补;B:寄存器,存放Y补;取反电路: =0时,补码加法器,将B寄存器直接送入并行加法器; =1时,补码减法器,将B送入并行加法器,同时,并行加法器的最低位产生进位,即B取反加1,此时并行加法器的运算相当于A补加-B补 ,完成减法运算。,V Sf1 Sf2= Xf Yf Cf Sf,19,3、补码加减运算器,V Sf1 Sf2= Xf Yf Cf Sf,20,二、机器数的移位运算,二进制数据(真值)每相对于小数点左移一位,相当于乘以2;每相对于小数点右移一位,相当于除以2。计算机中的移位运算分为:1、逻辑移位:将移位的数据视为无

7、符号数据,各数据位在位置上发生了变化,导致无符号数据的数值(无正负)放大或缩小。 2、算术移位:将移位的数据视为带符号数据(机器数)。算术移位的结果,在数值的绝对值上进行放大或缩小,同时,符号位必须要保持不变。 3、循环移位:所有的数据位在自身范围内进行左移或者右移,左移时最高位移入最低位,右移时最低位移入最高位。,21,补码的算术移位,算术左移:符号位不变,高位移出,低位补0。为保证补码算术左移时不发生溢出,移位的数据最高有效位必须与符号位相同。在不发生溢出的前提下,用硬件实现补码的算术左移时,直接将数据最高有效位移入符号位,不会改变机器数的符号。算术右移:符号位不变,低位移出,高位正数补0

8、,负数补1,即高位补符号位。,22,补码的算术移位举例,例:设X0.1001,Y0.0101,求X补 ?2X补 ?X/2补?Y补 ?2Y补 ?Y/2补?,0.1001,1.0010(溢出),0.0100,1.1011,1.0110,1.1101,23,三、移码加减运算与判溢,移码和移码计算移码和补码混合计算移码运算结果判溢:,24,三、移码加减运算与判溢,移码运算结果溢出的判断条件是:当结果的最高符号位Sf1=1时溢出,Sf1=0时结果正确。Sf1 Sf2=10时,结果正溢出;Sf1 Sf2=11时,结果负溢出。由于移码运算用于浮点数的阶码,当运算结果正溢出时,浮点数上溢;当运算结果负溢出时,

9、浮点数下溢,当作机器零处理。,25,四、十进制加法运算,计算机中的十进制加法器通常采用BCD码设计,在二进制加法器的基础上,加上适当的校正电路,可以实现BCD码的加法器。对于8421BCD码来说,当相加的两数之和S9时,加6校正;当S9时,且无进位时,结果正确,不需校正。,26,4.2 定点数的乘法运算及实现,原码乘法及实现,补码乘法及实现,阵列乘法器,27,原码乘法及实现(1),由于计算机的软硬件在逻辑上具有一定的等价性,因此实现乘除法运算,可以有三种方式:.用软件实现。硬件上:设计简单,没有乘法器和除法器。指令系统:没有乘除指令,但有加/减法和移位指令实现:乘除运算通过编制一段子程序来实现

10、算法:程序中运用串行乘除运算算法,循环累加、右移指令乘法,循环减、左移指令除法。运算速度:较慢。适用场合:单片机。,28,原码乘法及实现(2),.用硬件乘法器和除法器实现。硬件上:设置有并行加法器、移位器和若干循环、计数控制逻辑电路搭成的串行乘除法器。指令系统:具有乘除法指令。实现:乘除运算通过微程序一级(硬件微程序)来实现。算法:在微程序中依据串行乘除运算算法,循环累加、右移指令乘法,循环减、左移指令除法。运算速度:有所提高,但硬件设计也相对复杂。适用场合:低性能CPU。,29,原码乘法及实现(3),.用高速的阵列乘法器和阵列除法器来实现。硬件上:设置有专用的、并行运算的阵列乘法器和阵列除法

11、器。指令系统:具有乘除法指令。实现:完全通过硬件来实现。算法:并行乘/除法。运算速度:很快,但硬件设计相当复杂。适用场合:高性能CPU。,30,一、原码乘法及实现,1、手工乘法算法手工计算10111101,步骤:手工算法:对应每1位乘数求得1项位积,并将位积逐位左移,然后将所有的位积一次相加,得到最后的乘积。,2、原码一位乘法算法: 假设X原=XS X1 X2 Xn , Y原=YS Y1 Y2 Yn , P=XY,PS是积的符号:符号位单独处理 Ps=Xs Ys 绝对值进行数值运算 |P|=|X|*|Y|例如:X=+1011,Y=-1101,用原码一位乘法计算,31,原码乘法,从一个简单的例子

12、开始:,C乘数,B被乘数,1,符号:Ps=XsYs =01=1,A部分积,乘积,部分积,部分积,部分积,32,乘法算法实现(一),33,原码乘法的实现 (一),8-位被乘数寄存器, 8-位 ALU, 8-位 部分积寄存器, 4-位乘数寄存器,34,乘法算法实现(二),35,4-位被乘数寄存器,4 -位 ALU, 8-位 部分积寄存器, 4-位乘数寄存器,Product,Multiplier,Multiplicand,32-bit ALU,Shift Right,Write,Control,32 bits,32 bits,64 bits,Shift Right,原码乘法的实现 (二),36,实现

13、(一)的不足:被乘数的一半存储的只是0,浪费存储空间每次加法实际上只有一半的位有效,浪费了计算能力实现(二)的改进:只在部分积左边进行加法。 在减少加法器位数的同时,并没有减低积的位数。,37,出现的问题和解决办法,1、在加法器中,很难实现多个数据同时相加 解决:每求得一个相加数,然后与上一次部分及相加,N次累计相加。2、加法器的位数与寄存器位数相同,而不是寄存器的两倍。解决:手工计算中,我们可以看到,前一次部分积最低位不参与下一次相加运算。所以,我们可以通过,每求的一个部分积,使其向右移动一位,这样,每次相加,都是N位和N位的相加,右移动的一位到C寄存器中的最高位去。 N次移位3、乘数C中的

14、0或1决定本次相加数是被乘数B还是0.但乘数中每一位不方便判断。所以,用最低位来实现这种判断就方便多了。所以可以将乘数用右移的方式来解决这个问题,38,举例,X原=0,1011 Y原=1,1101Ps=XsYs =01=1|P| = |X|Y|B寄存器被乘数|X|C寄存器乘数|Y| 最后乘积的低四位A寄存器部分积 最后乘积的高四位,P原=1,10001111,39,一、原码乘法及实现,控制逻辑电路,3、原码乘法的硬件实现,40,原码一位乘法,00000,1101,0 0 0 0 0,1 1 0 1,为各寄存器给初值,0 1 0 1 1,41,第一次求部分积,00000,1101,0 1 0 1

15、 1,01011,1101,加运算:|X|,42,00000,1101,0 0 1 0 1,1 1 1 0,01011,1101,右移1位,00101,1110,第一次求部分积,43,00000,1101,0 0 1 0 1,1 1 1 0,01011,1101,加运算:0,00101,1110,00101,1110,第二次求部分积,44,00000,1101,0 0 0 1 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,第二次求部分积,45,00000,1101,0 1 1 0 1,01011,1101,加运算:|X|,00101,

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

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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