《运算方法和运算部件3-3,4,.ppt》由会员分享,可在线阅读,更多相关《运算方法和运算部件3-3,4,.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机学院计算机学院计算机学院计算机学院计算机组成与结构计算机组成与结构本科生课程教学本科生课程教学计算机学院计算机组成与结构q本课程主要讲授计算机系统的硬件和软件构成方法,包括硬件系统中运算器、控制器、存储器、输入设备和输出设备和总线系统的构成原理等;并与当代先进的计算机技术相结合。是计算机科学与技术本科专业核心课程。q本课程着重计算机系统组成与结构方面的教学和研究。本课程着重计算机系统组成与结构方面的教学和研究。计算机结构定义为系统程序员所能见到的计算机硬件特性;计算机组成是指计算机硬件的具体实现。计算机学院第三章 运算方法和运算部件 q数据的表示方法和转换q带符号数的表示方法及加减运算q
2、二进制乘法运算二进制乘法运算q二进制除法运算二进制除法运算q浮点数的运算方法浮点数的运算方法q运算部件q数据校验码计算机学院3.3 二进制乘法运算一、定点数一位乘法一、定点数一位乘法1、定点原码一位乘法、定点原码一位乘法q用原码实现乘法运算十分方便,在定点运算中,完成两个原码表示得数相乘时,乘积得符号由两数得符号位按位相加(异或)得到,而乘积得数值部分则是两个数得绝对值之积。可以表示为:q被乘数X原=Xs.X1X2Xnq乘数Y原=Ys.Y1Y2Ynq乘积Z原=(XsYs).(0.X1X2.Xn)(0.Y1Y2.Yn)计算机学院3.3 二进制乘法运算q符号法则:符号法则:同号相乘为正(0),异号
3、相乘为负(1),(XsYs=00,01,10,11),所以积得符号可按“异或”运算得到。q数值部分运算法则:数值部分运算法则:与普通十进制小数乘法相似。计算机学院3.3 二进制乘法运算q例,X=0.1101,Y=0.1011,求X*Y=?手工方法机器方法0.1101(X)0.11010.1011(Y)0.10111101P10.000011011101.P20.00011010000P30.000000+1101.P4+0.0110110001111P0.10001111计算机学院3.3 二进制乘法运算q机器运算与手工运算方法区别在于:(1)机器一次只能进行两个数相加,所以P1+P2+P3+P
4、4必须分步进行:P1+P2;(P1+P2)+P3;(P1+P2)+P3+P4。(2)每做完一次加运算,把部分积右移一位(相当于把被加数右移,而不是左移),移出得数码不参加运算,故机器的位数可以固定。q由此可以分析出机器乘法运算得基本规律。计算机学院3.3 二进制乘法运算q原码机器乘法规律:原码机器乘法规律:当所乘得乘数为1时,则上次所得的部分积(最初为0)加被乘数右移一位,而得新的次一部分积;若所乘的乘数为0时,则上次所得的部分积加0右移一位后就是新的次一部分积。如此反复,直到乘数各位都乘完为止。计算机学院3.3 二进制乘法运算q例,X=0.1101,Y=0.1011,求X*Y=?机器算法如下
5、:0000初始化值y=1+110111011101.P1y=1+1101100111100111P2y=0+0000100111100111.P3y=1+11011000111110001111P4=P计算机学院3.3 二进制乘法运算q一般而言,设被乘数X,乘数Y都是小于1的n位定点正数:X=0.X1X2.XnY=0.Y1Y2.Yn其乘积为:X*Y=X(0.Y1Y2Yn)=X(Y12-1+Y22-2+.+Yn2-n)=2-1(Y1X+2-1(Y2X+2-1(+2-1(Yn-1X+2-1(YnX+0)计算机学院3.3 二进制乘法运算q令Pi表示第i次的部分积,则上式可写成如下递推公式:P0=0,
6、P1=2-1(YnX+P0),P2=2-1(Yn-1X+P1),Pi=2-1(Yn-i+1X+Zi-1),Pn=X*Y=2-1(Y1X+Pn-1)此处的P0,P1Pn-1为部分积,Pn为最终的乘积P。计算机学院3.3 二进制乘法运算q上述乘法运算的递推算法可用流程图来表示:(P74图3.6)开始Pi=0,i=0Yn=1Pi+0Pi+XPi,Y右移一位,i=i+1i=n?结束YNNY计算机学院3.3 二进制乘法运算q实现原码一位乘法的逻辑电路图(P73图3.5)。计算机学院3.3 二进制乘法运算2、定点补码一位乘法、定点补码一位乘法q原码乘法的主要问题是符号位不能参加运算。补码乘法可以实现符号位
7、直接参加运算。(1)补码与真值的转换关系补码与真值的转换关系 设 X补=X0.X1X2.Xn 当 X=0时,X0=0(符号位为0)尾数部分为真值X 计算机学院3.3 二进制乘法运算q当X=0,表示够减,商上“1”;如果ri+10,表示不够减,商上“0”,还要加除数y,然后左移一位再作减除数y的运算。q例,X=0.1001,Y=0.1011,用恢复余数法秋X/Y=?X原X补0.1001Y原Y补0.1011-Y补1.0101采用双符号位,恢复余数法运算过程如下:计算机学院3.4 二进制除法运算X/YQ00.1001+-y补11.0101q0=011.1110r0000.1110+-y补11.010
8、1q2=100.0011r2000.0110+-y补11.0101q3=011.1011r30计算机学院3.4 二进制除法运算q不恢复余数法(加减交替法)不恢复余数法(加减交替法)q基本规则:基本规则:当余数为正时,商上“1”,余数左移一位,减除数;当余数为负时,商上“0”,余数左移一位,加除数。q恢复余数法与不恢复余数法的区别:恢复余数法与不恢复余数法的区别:当余数ri为正时:恢复余数法为,+ri*2-y,商为“1”不恢复余数法为,+ri*2-y,商为“1”当余数ri为负时:恢复余数法为,(-ri+y)*2-y=-2ri+y,商为“1”不恢复余数法为,-ri*2+y,商为“0”计算机学院3.
9、4 二进制除法运算例,X=0.1001,Y=0.1011,用不恢复余数法求X/Y=?X原X补=0.1001,Y原Y补0.1011,-Y补1.0101X/YQ00.1001+-Y补11.0101q0=011.1110r0000.1110+-Y补11.0101q2=100.0011r2000.0110+-Y补11.0101q3=011.1011r30计算机学院3.4 二进制除法运算2、定点补码一位除法、定点补码一位除法q补码加减交替法补码加减交替法q法则:法则:(1)被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加上除数。(2)余数与除数同号,商为“1”,余数左移一位,下次减除数;余数
10、与除数异号,商为“0”,余数左移一位,下次加除数。(3)重复步骤(2),包括符号位在内,共做n+1步。计算机学院3.4 二进制除法运算q商的校正:商的校正:q补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的,按照这种算法所得到的有限位商为负数时,是反码形式,而正确需要得到商是补码形式,两者之间相差末位的一个“1”,所以最后加校正量“1”。q例,X=-0.1001,Y=+0.1101,求X/Y补?q解:X补=1.0111,Y补=0.1101,-Y补1.0011计算机学院3.4 二进制除法运算X/YQ操作说明11.0111+Y补00.1101q0=0X补与Y补异号00.0100r1余数r
11、1与除数同号00.1000左移,商1,减除数+-Y补11.0011q1=111.1011r2余数r2与除数异号11.0110左移,商0,加除数+Y补00.1101q2=000.0011r3余数r3与除数同号00.0110左移,商1,减除数+-Y补11.0011q3=111.1001r4余数r4与除数异号11.0010左移,商0,加除数+Y补00.1101q4=011.1111r5余数r5与除数异号,商左移,商0,余数不左移。所以,Q补1.0100+0.0001=1.0101,R补=1.1111计算机学院3.4 二进制除法运算二、提高除法运算速度的方法二、提高除法运算速度的方法q跳跳0跳跳1除法
12、除法根据余数前几位代码值再次求得几位同位1或0得商。q规则:规则:(1)余数R=0,且R的高K个数位均为0,则本次直接得商1,后跟K-1个0,R左移K位后,减除数Y,得新得余数。(2)余数R0,且R的高K个数位均为1,则本次直接得商0,后跟K-1个1,R左移K位后,加除数Y,得新得余数。(3)不满足(1)、(2)中条件时,按一位除法上商。参见P88例3.43。计算机学院3.4 二进制除法运算计算机学院3.5 浮点数的运算方法一、一、浮点加法和减法浮点加法和减法q设有两个浮点数x和y,它们分别为qx2mMxqy2nMyq其中m和n分别为数x和y的阶码,Mx和My为数x和y的尾数。计算机学院3.5
13、 浮点数的运算方法q(1)对阶对阶的原则:小阶向大阶看齐。若mn则将操作数y的尾数右移一位,y的阶码n加1,直到mn。若mn则将操作数x的尾数右移一位,x的阶码m加1,直到mn。q(2)尾数相加 尾数相加与定点数的加、减法相同计算机学院3.5 浮点数的运算方法q(3)结果规格化当运算结果的尾数部分不是11.0或00.1的形式时,则应进行规格化处理。当尾数符号位01或10需要右规。右规的方法是尾数连同符号位右移一位、和的阶码加1,右规处理后就可得到11.0或00.1的形式,即成为规格化的数.当运算结果的符号位和最高有效位为11.1或00.0时需要左规。左规的方法是尾数连同符号位一起左移一位、和的
14、阶码减1,直到尾数部分出现11.0或00.1的形式为止。计算机学院3.5 浮点数的运算方法q(4)溢出判断在阶码的符号位出现01或10时,表示溢出,而尾数的符号位为01或10时,给出的是运算结果需要右规的信号。q例:例:X=20100.11011011,Y=2100(-0.10101100)求X+Y补计算机学院3.5 浮点数的运算方法q例:例:x101.10010230.10110010y1100.1000240.11001000 x补0011,0.1011001y补0100,0.1100100q(1)对阶Em补n补001111001111,其真值位1,即:x的阶码比y的阶码小1,x的尾数应右
15、移1位,阶码加1得:x补0100,0.0101101(0舍1入)计算机学院3.5 浮点数的运算方法q(2)尾数相加减用双符号,即:x尾补y尾补00.010110100.010110100.110010011.001110001.001000111.1001001计算机学院3.5 浮点数的运算方法q(3)结果规格化由于加运算结果的尾数为 01.的形式,所以应右规,尾数右移一位,阶码加1,所以结果为:xy补0101,0.1001001 0舍1入 xy2101 0.1001001 由于减运算结果的尾数为 11.1的形式,所以应左规,尾数左移一位,阶码减1,所以结果为:xy补0011,1.001001
16、0 xy20110.1101110计算机学院3.5 浮点数的运算方法二、二、浮点数的乘除法浮点数的乘除法1.浮点数的阶码运算浮点数的阶码运算q(XY)移x移y补q(XY)移x移Y补q使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参加加减运算,则溢出条件是结果的最高符号位为1。此时,当低位符号位为0时,表明结果上溢,为1时,表明结果下溢。当最高符号位为0时,表明没有溢出,低位符号位为1,表明结果为正,为0时,表明结果为负。q见书见书P92P92例题。例题。计算机学院3.5 浮点数的运算方法2.浮点乘法运算浮点乘法运算设x2mMx,y2nMy则xy2mn(MxMy)其中,M
17、x、My分别为x和y的尾数。浮点乘法运算也可以分为3个步骤:q(1)阶码相加q(2)尾数相乘尾数相乘可按定点乘法运算的方法进行运算。q(3)结果规格化计算机学院3.5 浮点数的运算方法3.浮点除法运算浮点除法运算设x2mMx,y2nMy,则xy2mn(MxMy)浮点除法运算也可以分3步进行:q(1)如果被除数的尾数大于除数的尾数,则将被除数的尾数右移一位并相应调整阶码。q(2)阶码求差q(3)尾数相除两个尾数相除与定点除法相同。计算机学院3.5 浮点数的运算方法4浮点数的底的问题浮点数的底的问题q浮点数的底一般为2,为了用相同位数的阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底为8或16的。此时浮点数N被表示成qN=8EM或N16EMq当阶码以8为底时,只要尾数满足l8M1或lM18就是规格化数。执行对阶和规格化操作时,每当阶码的值增或减1,尾数要相应右移或左移三位。q当阶码以16为底时,只要尾数满足116M1或1M116就是规格化数。执行对阶和规格化操作时,阶码的值增或减1,尾数必须移四位。q判别为规格化数或实现规格化操作,均应使数值的最高三位(以8为底)或四位(以16为底)中至少有一位与符号位不同。计算机学院3.5 浮点数的运算方法