1、 第二章第二章 运算方法和运算器运算方法和运算器2 2.2 定点加法、减法运算定点加法、减法运算一、补码的加减法运算一、补码的加减法运算 1、加法、加法 任意两个数的补码之和,等于该两任意两个数的补码之和,等于该两数和的补码。数和的补码。X+YX+Y补补=X=X补补+Y+Y补补 (mod 2)(mod 2)两个数不管正负,均用补码表示,两个数不管正负,均用补码表示,符号位应当做数值参加运算符号位应当做数值参加运算,符号位相,符号位相加所产生的进位要丢掉,结果为补码。加所产生的进位要丢掉,结果为补码。可以证明:可以证明:X+YX+Y补补=X=X补补+Y+Y补补X-YX-Y补补=X=X补补+-Y+
2、-Y补补-Y-Y补补的求法的求法:将将YY补补连同符号位求反加连同符号位求反加1 1。例例:X1001 Y0101,求求 X+Y?解解:X补补=01001 Y补补=00101 X+Y补补=X补补+Y补补=01001+00101 =01110例例:X1001 Y-0101,求求 X+Y?解解:X补补=01001 Y补补=11011 X+Y补补=X补补+Y补补=01001+11011 =定点运算器定点运算器 定点加减法定点加减法 例例:X0.1011 Y-0.0101,求求 X+Y?解解:X补=0.1 0 1 1Y补=1.1 0 1 1+011010.丢到1 X补+Y补=0.0110X+Y=定点运
3、算器定点运算器 定点加减法定点加减法 例例:X-11001,Y-00011,求求 X+Y?解解:X补=1 0 0 1 1 1Y补=1 1 1 1 0 1+00101 1丢到1 X补+Y补=100100X+Y=-111000由以上两例看到由以上两例看到,补补码加法的特点码加法的特点:一是符号位要作为一是符号位要作为数的一部分一起参数的一部分一起参加运算。加运算。二是要在模二是要在模2的意的意义下相加,即超过义下相加,即超过2的进位要丢掉的进位要丢掉!定点运算器定点运算器定点加减法定点加减法 补码的减法:补码的减法:XX补补-Y-Y补补=X+=X+(-Y-Y)补补=X=X补补+-Y+-Y补补 (-
4、Y-Y)的补码称为的补码称为YY补补的机器负数,由的机器负数,由YY补补求求-Y-Y补补的过程称为将的过程称为将YY补补“变补变补”或对或对YY补补求求补,补,由由YY补补求求-Y-Y补补的方法是,不管的方法是,不管Y Y的真值为的真值为正或为负,都是将正或为负,都是将YY补补的各位连同符号位在内的各位连同符号位在内全变反后,最低位加全变反后,最低位加1 1。定点运算器定点运算器 定点加减法定点加减法 例例:X-0.1011 Y-0.0110,求求 XY?解解:X补补=1.0 1 0 1-Y补补=0.0 1 1 0+1101 1.XY补补1.1011XY=-二、溢出及其判别方法:二、溢出及其判
5、别方法:在计算机中,由于机器码的尾数通在计算机中,由于机器码的尾数通常是给定的(如常是给定的(如1616位字长,位字长,3232位字长),位字长),因此,在计算机中数的表示范围是有限因此,在计算机中数的表示范围是有限的,若两数进行加减运算的结果超出了的,若两数进行加减运算的结果超出了给定的取值范围,就称为给定的取值范围,就称为溢出溢出。一旦出。一旦出现溢出,必须及时处理,否则会出现错现溢出,必须及时处理,否则会出现错误。误。1、溢出、溢出例1:X=1010 Y=1001 求 X+Y解:X补=0 1 0 1 0+Y补=0 1 0 0 1 1 0 0 1 1例2:X=-1010 Y=-1011 求
6、 X+Y解:X补=1 0 1 1 0+Y补=1 0 1 0 1 0 1 0 1 1较大正数相加产生进位,影响符号位较大的负数对应较小的正数补码相加无进位,符号位自己相加2、溢出原因:、溢出原因:1)两个正数太大:)两个正数太大:产生进位而改变了符号位;2)两个负数绝对值太大:两个负数绝对值太大:对应的补码太小,不 能向符号位产生进位,使符号位相加后,向前产生进位。1、两异号数相加或两同号数相减是否两异号数相加或两同号数相减是否 会产生溢出?会产生溢出?2、仅当两同号数相加或两异号数相减、仅当两同号数相加或两异号数相减 时才有可能产生溢出?时才有可能产生溢出?问题:问题:决不会产生溢出决不会产生
7、溢出正确正确 例例:X-0.100 Y-0.101,求求 X+Y?解解:X补=1.1 0 0Y补=1.0 1 1+11110.丢到1 两负数相加,结果应为负数,但运算结两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生果为正数,表明有溢出发生。数据向前数据向前无进位,符号位向前有进位无进位,符号位向前有进位3、溢出的判断、溢出的判断 1)采用)采用单符号位单符号位的判断方法的判断方法 例例:X100,Y-11,求求 X-Y?解:X补=0 1 0 0-Y补=0 1 1 0+01 1一个正数减去一个负数,结果为正数,但计算一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出发生,
8、出错结果为负数,表明有溢出发生,出错数据向前有进位,符号位向前无进位数据向前有进位,符号位向前无进位0溢出逻辑表达式为溢出逻辑表达式为:V=Cf C0 (其中其中Cf为为符号位产生的进位,符号位产生的进位,C0为最高有效位产生的进位)为最高有效位产生的进位) 溢出的原因:溢出的原因:之所以发生错误之所以发生错误,是因为运算结果产生了是因为运算结果产生了溢出。两个正数相加溢出。两个正数相加,结果大于机器所能表示结果大于机器所能表示的最大正数的最大正数,称为称为上溢上溢。而两个负数相加。而两个负数相加,结果结果小于机器所能表示的最小负数小于机器所能表示的最小负数,称为称为下溢下溢。为了判断为了判断
9、“溢出溢出”是否发生是否发生,可采用两种可采用两种检测的方法。第一种方法是采用双符号位法检测的方法。第一种方法是采用双符号位法,这称为这称为“变形补码变形补码”或或“模模4 4补码补码”。从而可。从而可使模使模2 2补码所能表示的数的范围扩大一倍。补码所能表示的数的范围扩大一倍。定点运算器定点运算器 定点加减法定点加减法2)采用双符号位的判断方法)采用双符号位的判断方法 每个操作数的补码符号用两个二进制数表示,每个操作数的补码符号用两个二进制数表示,称为交形补码,用称为交形补码,用“00”00”表示正数,表示正数,“11”11”表示负表示负数,左边第一位叫第一符号位,右边第一位称为第数,左边第
10、一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。两符号位不同,则表明产生了溢出。“1010”表示负表示负溢出(下溢出),说明运算结果为负数,溢出(下溢出),说明运算结果为负数,“0101”表表示正溢出(下溢出),说明运算结果为正数。示正溢出(下溢出),说明运算结果为正数。定点运算器定点运算器 定点加减法定点加减法采用双符号位的判断方法采用双符号位的判断方法 高高符号位符号位低低符号位符号位 结果结果00
11、正正01上溢上溢10下溢下溢11负负定点运算器定点运算器 定点加减法定点加减法3)利用进位值的判断方法)利用进位值的判断方法 两补码数进行加减运算时,若最高数两补码数进行加减运算时,若最高数值位产生向符号的进位而符号位不产生进值位产生向符号的进位而符号位不产生进位时,发生正溢出,若最高数值位无进位位时,发生正溢出,若最高数值位无进位而符号位有进位时,发生负溢出而符号位有进位时,发生负溢出。 例:X+0.1100 Y+0.1000,求 X+Y?解:X补=00.1100Y补=00.1000+01.0100正数太大了,向前有进位,而符号位向前无正数太大了,向前有进位,而符号位向前无进位;两个符号位:
12、进位;两个符号位:0101,表示溢出,表示溢出n例:X-0.1100 Y-0.1000,求 X+Y?解:X补=11.0100Y补=11.1000+10.1100 负数绝对值太大了对应的补码小,向前无进位,而符号负数绝对值太大了对应的补码小,向前无进位,而符号位向前有进位;位向前有进位;两个符号位:两个符号位:1010,表示溢出,表示溢出溢出逻辑表达式为溢出逻辑表达式为:V=Sf1 Sf2 (其中其中Sf1为最高符号位,为最高符号位,Sf2为第二符号位)为第二符号位) 由此可以得出如下结论:由此可以得出如下结论:1.1.当以模当以模4 4补码运算补码运算,运算结果的二符号位相异时运算结果的二符号
13、位相异时,表示溢出;相同时表示溢出;相同时,表示未溢出。表示未溢出。2.2.模模4 4补码相加的结果补码相加的结果,不论溢出与否不论溢出与否,最高符号位最高符号位始终指示正确的符号。始终指示正确的符号。三、基本的加法三、基本的加法/减法器减法器1、一位半加器、一位半加器两个输出端的逻辑表达式:两个输出端的逻辑表达式:SiAi Bi Ci1AiB三、基本的加法三、基本的加法/减法器减法器2、一位全加器、一位全加器FAAiBiCiCi+1Si向高位进位本位输出结果输入输出AiBiCiSiCi+10000000110010100110110010101011100111111表表2.2 一位全加器真
14、值表一位全加器真值表两个输出端的逻辑表达式:两个输出端的逻辑表达式:SiAi Bi CiCi1AiBiBiCiCiASiAi Bi CiCi1AiBiBiCiCiAi按此表达式组成的一位全加按此表达式组成的一位全加器示图:器示图:Ci+1=(Ai Bi)Ci AiBn个1位的全加器(FA)可级联成一个n位的行波进位加减器。M为方式控制输入线,当M0时,作加法(AB)运算;当M1时,作减法(AB)运算,在后一种情况下,AB运算转化成A补B补运算,求补过程由B1来实现。单符号位判溢出单符号位判溢出 双符号双符号 正溢出正溢出 0.1001 00.1001 +0.1100 00.1100 1.010
15、1 10.0101 负溢出负溢出 1.0111 11.0111 +1.0011 +11.0011 10.1010 补码加减法的逻辑实现补码加减法的逻辑实现图示:图示:n个个1位全加器组成。位全加器组成。单符号位判溢出。单符号位判溢出。V=c0 c1 双符号位判溢出。双符号位判溢出。V=Sf1 Sf2y0y1V=1cn=0 做加法c0=1 做减法(求反加1)定点运算器定点运算器定点乘法定点乘法定点原码一位乘法定点原码一位乘法设被乘数设被乘数XX原原=X=Xf fX Xn-1n-1X Xn-2n-2XX1 1X X0 0 乘乘 数数YY原原=Y=Yf fY Yn-1n-1Y Yn-2n-2YY1
16、1Y Y0 0 乘乘 积积XX原原=Z=Zf fZ Z2n-12n-1Z Z2n-22n-2ZZ1 1Z Z0 0 运算原则:同号相乘为正,异号相乘运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部为负,符号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似分的运算方法与普通的十进制乘数相类似。定点运算器定点运算器定点乘法定点乘法 手工算法手工算法0.1 1 0 10.1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1+1 0 0 0 1 1 1 1 0.l 两个n位数相乘,其积为2n位,则需要2n位长的加法器,这不适用于定点机的形式。
17、l 机器一次只能进行两个数的相加,不能进行多个数据的加法。l 手工计算中,乘数的每一位是0还是1都可直接看见,而在计算机中,采用放乘数的寄存器的每一位直接决定本次相加数是被乘数还是0是很不方便的,若采用该寄存器的最低一位来执行这种判断就简便了。定点运算器定点运算器定点乘法定点乘法运算法则运算法则:计算机中执行乘法时,积的符号位由被乘数计算机中执行乘法时,积的符号位由被乘数和乘数的符号位通过一个半加器实现。和乘数的符号位通过一个半加器实现。数值部分的运算规则是:从最低位数值部分的运算规则是:从最低位Y Y0 0开始,开始,当乘数当乘数Y Yi i为为1 1时,将上次部分积加上被乘数的绝时,将上次
18、部分积加上被乘数的绝对值,然后右移一位,得到新的部分积;对值,然后右移一位,得到新的部分积;当当Y Yi i为为0 0时,则写下全时,则写下全0 0。然后再对乘数。然后再对乘数Y Y的高一位进行的高一位进行类似乘法运算。重复类似乘法运算。重复“加加右移右移”操作操作N N次,可次,可得到最后的乘积。得到最后的乘积。定点运算器定点运算器定点乘法定点乘法 例例:X=0.1101,Y=0.1011,求求X*Y=?解:解:|X|=00.1101|Y|=00.1011 部分积部分积 乘数乘数 说明说明0 0.0 0 0 00 0.1 1 0 1+Yf 1 0 1 10 0.1 1 0 10 0.0 1
19、1 0 0 0.1 1 0 1+0 1.0 0 1 10 0.1 0 0 10 0.0 0 0 0+0 0.1 0 0 10 0.0 1 0 00 0.1 1 0 10 1.0 0 0 10 0.1 0 0 0+1 Yf 1 0 11 1 Yf 1 01 1 1 Yf 11 1 1 1 YfZ0=0Y0=1,+XY2=1,+XY1=0,+0Y0=1,+X右移,得Z1右移,得Z2右移,得Z3右移,得Z4=X*Y定点运算器定点运算器定点乘法定点乘法 结果:计算:X=-0.1101 Y=0.0110,用原码阵列乘法器求X*Y?X*Y=0.10001111X*Y=2.5.1 逻辑运算逻辑运算 计算机中
20、除了进行加、减、乘、除等计算机中除了进行加、减、乘、除等基本算术运算外基本算术运算外,还可对两个或一个逻辑数还可对两个或一个逻辑数进行逻辑运算。进行逻辑运算。所谓逻辑数所谓逻辑数,是指不带符号的二进制数。利用是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较逻辑运算可以进行两个数的比较,或者从某个或者从某个数中选取某几位等操作。数中选取某几位等操作。计算机中的逻辑运算计算机中的逻辑运算,主要是指主要是指逻辑非逻辑非、逻辑逻辑加加、逻辑乘逻辑乘、逻辑异逻辑异四种基本运算。四种基本运算。 1.逻辑非运算逻辑非运算逻辑非也称逻辑非也称求反求反。如:1 101001011,01001011,2
21、211110000,11110000,求求1 1,2 2。110110100200001111 2.逻辑加运算按位求它们的逻辑加运算按位求它们的“或或”10100001,10100001,10011011,10011011,求求。1 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 3.逻辑乘运算按位求它们的逻辑乘运算按位求它们的“与与”10111001,10111001,11110011,11110011,求求。1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 4.逻辑异运算逻辑异运算按位求它们的模2和1
22、0101011,11001100,求。解解:1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 即 定点运算器的组成定点运算器的组成 运算器主要由算术逻辑部件,通用寄存器和状态寄存运算器主要由算术逻辑部件,通用寄存器和状态寄存器组成。器组成。算术逻辑部件算术逻辑部件ALUALU(Arithmetic and Logic UnitArithmetic and Logic Unit):主要完成对二进制信息的定点运算,如:加、减、乘、除、主要完成对二进制信息的定点运算,如:加、减、乘、除、与、或、非、异或、逻辑移位、算术移位等。与、或、非、异或、逻辑移位、
23、算术移位等。通用寄存器通用寄存器:主要用来保存参加运算的操作数和运算主要用来保存参加运算的操作数和运算的结果。的结果。状态寄存器状态寄存器:用来记录算术、逻辑运算或测试操作的用来记录算术、逻辑运算或测试操作的状态结果。一般有零标志位,负标志位,溢出标志位、进状态结果。一般有零标志位,负标志位,溢出标志位、进位或借位标志位等。位或借位标志位等。定点运算器的组成定点运算器的组成多功能算术多功能算术/逻辑运算单元逻辑运算单元基本思想基本思想 一位全加器(一位全加器(FAFA)的逻辑表达式为:的逻辑表达式为:F Fi i=A=Ai i B Bi i C Ci i C Ci+1i+1=A Ai iB B
24、i i+B+Bi iC Ci i+C+Ci iA Ai i 为了将全加器的功能进行扩展以完成多种算术逻辑为了将全加器的功能进行扩展以完成多种算术逻辑运算,先不将输入运算,先不将输入A Ai i和和B Bi i和下一位的进位和下一位的进位C Ci i直接进行全加,直接进行全加,而是将而是将A Ai i和和B Bi i先组合由先组合由S S0 0,S S1 1,S S2 2,S S3 3控制的组合函数控制的组合函数X Xi i和和Y Yi i,然后再将然后再将X Xi i,Y Yi i和下一位进位数通过全加器进行全和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组合函数,加,这
25、样,不同的控制参数可以得到不同的组合函数,以能够实现多种算术运算和逻辑运算。以能够实现多种算术运算和逻辑运算。定点运算器的组成定点运算器的组成多功能算术多功能算术/逻辑运算单元逻辑运算单元S1全加器函数发生器FiC n+i+1C n+iXiYiAi BiS0S2S3S0 S1 Yi S2 S3 Xi 0 0 Ai 0 0 1 0 1 AiBi 0 1 Ai+Bi 1 0 AiBi 1 0 Ai+Bi 1 1 0 1 1 AiXi、Yi与控制参数和输入量的关系定点运算器的组成定点运算器的组成多功能算术多功能算术/逻辑运算单元逻辑运算单元ALUALU的某一位逻辑表达式如下:的某一位逻辑表达式如下:
26、X Xi i=S=S3 3A Ai iB Bi i+S+S2 2A Ai iB Bi iY Yi i=A=Ai i+S+S0 0B Bi i+S+S1 1B Bi iF Fi i=Y Yi i+X+Xi i+C+Cn+in+iC Cn+i+1n+i+1=Y Yi i+X+Xi iC Cn+in+定点运算器的组成定点运算器的组成多功能算术多功能算术/逻辑运算单元逻辑运算单元 每一位的进位公式可递推如下:每一位的进位公式可递推如下:C n+1=Y0+X0CnC n+2=Y1+X1Cn+1=Y1+Y0X1+X0X1CnC n+3=Y2+X2Cn+2=Y2+X2 Y1+Y0X1 X2+X0X1 X2
27、CnC n+4=Y3+X3Cn+3 =Y3+X3 Y2+X2 X3 Y1+Y0X1 X2 X3+X0X1 X2 X3 C定点运算器的组成定点运算器的组成多功能算术多功能算术/逻辑运算单元逻辑运算单元设设:该式表明,第0位的进位输入可以直接传送到最高进位位上去,因而可以实现高速运算。G=Y3+X3 Y2+X2 X3 Y1+Y0X1 X2 X3 P=X0X1 X2 X3则:C n+4=G+PCn其中:G称为进位发生输出 P称为进位传送输出 用负逻辑表示的用负逻辑表示的4 4位算术位算术/逻辑运算单元逻辑运算单元(ALU)(ALU)的逻辑电路图的逻辑电路图如下如下,它是根据上面的原始推导公式它是根据
28、上面的原始推导公式用用TTLTTL电路实现的。这个电路实现的。这个期间的商业标号为期间的商业标号为74181ALU74181ALU。两级先行进位 并行进位并行进位 16位二级并行进位位二级并行进位ALU7418174181741817418174182C0C4C8C12C1674181-4片74182-1片32位ALU64位位3级先行进位级先行进位ALU74181-16片片 74182-5片片C0181181741827418274182C定点运算器的定点运算器的基本结构基本结构 运算器包括运算器包括ALU、阵列乘除器、寄存器、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等逻辑多路开关、
29、三态缓冲器、数据总线等逻辑部件。部件。计算机的运算器的结构一般有三种。计算机的运算器的结构一般有三种。定点运算器的基本结构定点运算器的基本结构ABALU通 用寄存器特 殊寄存器单单总线结构的运算器总线结构的运算器 输入数据和操作结构需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。由于只控制一条总线,所以控制电路比较简单。通 用寄存器特 殊寄存器特 殊寄存器ALU缓冲器总线1总线2 两个操作数同时加两个操作数同时加到到ALUALU进行运算,只需要进行运算,只需要一次操作控制,而且马一次操作控制,而且马上得到运算结果。上得到运算结果。ALUALU的输出不能直接加到总线上去,的输出不
30、能直接加到总线上去,这是因为,当形成操作结构的输出时,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,因而必两条总线都被输入数据占据,因而必须在须在ALUALU的输出端设置缓冲器。的输出端设置缓冲器。双双总线结构的运算器总线结构的运算器定点运算器的基本结构定点运算器的基本结构定点运算器的基本结构定点运算器的基本结构通 用寄存器ALU特 殊寄存器总 线旁路器总线1总线2总线3 ALU的两个输入端分别由总线提供,而ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线2传送到总线3,那么可以通过控制总线旁
31、路器把数据传出。2.6 浮点数的表示浮点数的表示浮点运算器浮点运算器浮点运算方法浮点运算方法浮点数的加法、减法运算浮点数的加法、减法运算 设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,实现浮点加减法算的基本步骤分为四步完成:0 0操作数检查操作数检查:用来判断两个操作数中是否有一个为0.对阶操作对阶操作:即比较两个浮点数的阶码值的大小,求E=Ex-Ey,然后将小阶对大阶。尾数进行加或减运算尾数进行加或减运算:实现尾数的加减运算,执行两个完成对阶后的浮点数的求和(差)的过程 规格化并进行舍入处理规格化并进行舍入处理:若得到的结果不满足规格化规则,就必须把它变成规格化的数。舍入操作,在
32、执行对阶或右规操作时,会使位数低位上的一位或若干位的数值被移掉,使数值精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。浮点运算器浮点运算器浮点运算方法浮点运算方法取指定位数舍入处理阶码减1尾数左移1位尾数加法(带符号)小阶加1尾数右移1位加法减法Y变符号X=0?Y=0?zyzxz另一数z0报告上溢报告下溢阶码相同?尾数=0?尾数=0?阶码加1尾数右移1位阶码上溢阶码下溢尾数上溢已是1.M0操作检查对阶操作尾数加减结果规格化结束是是是是是是是是否否否否否否否否浮点运算器浮点运算器浮点运算方法浮点运算方法 例:例:设设X=2X=2010010*0.110110110.11011011,Y
33、=2Y=2100100*(-0.-0.1010110010101100),求),求X+YX+Y。(假设两数均以补码表假设两数均以补码表示示,阶码采用双符号位阶码采用双符号位,尾数采用单符号位尾数采用单符号位.).)浮点运算器浮点运算器浮点运算方法浮点运算方法解:浮点表示为:X浮=00 010,0.11011011 Y浮=00 100,1.01010100()对阶 E=Ex-Ey=00010+11100=11110即E为-2,X的阶码小,应使Mx右移两位,Ex加2,得:X浮=00100,0.00110110(11)浮点运算器浮点运算器浮点运算方法浮点运算方法+(2).尾数求和 ()()浮点运算器
34、浮点运算器浮点运算方法浮点运算方法(3).3).规格化和舍入处理规格化和舍入处理 结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移1位,阶码减1,所以结果为1.00010101(10),阶码为00 011 舍入处理,采用0舍1入法处理,则有 1.0 0 0 1 0 1 0 1 1 1.0 0 0 1 0 1 1 浮点运算器浮点运算器浮点运算方法浮点运算方法(4).判溢出判溢出 阶码的符号位为阶码的符号位为0000,不溢出。所以最终的结果为,不溢出。所以最终的结果为 X+Y=2X+Y=2011011*(-0.11101010-0.11101010)浮点运算器浮点
35、运算器浮点运算方法浮点运算方法 例:例:设设X=2X=2001001*(-0.111-0.111),),Y=2Y=2010010*0.1010.101,求求X-Y.(X-Y.(假设两数均以补码表示假设两数均以补码表示,阶码采用阶码采用3 3位位,尾数采用尾数采用4 4位,均包括符号位位,均包括符号位.).)浮点运算器浮点运算器浮点运算方法浮点运算方法解:浮点表示为:X浮=001,1.001 Y浮=010,0.101()对阶 E补=Ex补-Ey补=001+110=111 即E为-1,X的阶码小,应使Mx右移1位,Ex加1,得:X浮=010,1.100(1)浮点运算器浮点运算器浮点运算方法浮点运算
36、方法+(2).尾数求差:-Y补=1.011 1.1 0 0(1)1.0 1 11 0.1 1 1 (1)丢失1两个负数相加,结果为正数,说明产生了溢出.但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。此时只是说明尾数的结果为不规格化数,应进行右规。浮点运算器浮点运算器浮点运算方法浮点运算方法 (3).3).规格化和舍入处理规格化和舍入处理 由于结果产生了溢出,应执行右规处理,所谓右规格化的规则,就是尾数右移1位,阶码加1,所以结果为1.011(1),阶码为011 舍入处理,采用恒舍法处理,则有尾数为浮点运算器浮点运算器浮点运算方法浮点运算方法(4).判溢出判溢出 阶码不溢出。所以最终的结
37、果为阶码不溢出。所以最终的结果为 X+Y=2X+Y=2011011*(-0.101-0.101)浮点运算器浮点运算器浮点运算浮点运算法法 浮点数的乘除法:设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,则浮点数乘法运算规则:X*Y=2(EX+EY)*(MX*MY)设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,则浮点除法运算规则:X*Y=2(EX-EY)*(MXMY)浮点运算器浮点运算器浮点运算法浮点运算法浮点乘、除法的运算步骤:1.浮点数的阶码运算2.阶码通常用补码和移码形式表示。对于移码来说:3.X+Y移=X移+Y补4.X-Y移=X移+-Y补5.在用移码进行计算时,判断
38、溢出的条件是当结果的最高符号位为1时,则产生了溢出。浮点运算器浮点运算器浮点运算法浮点运算法2.浮点数的尾数处理3.第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理。4.第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理。浮点运算器浮点运算器浮点运算方法浮点运算方法浮点运算器浮点运算器1.CPU之外的浮点运算器之外的浮点运算器总线接口部件数值运算部件控制字状态字指数模块数据缓冲器控制部件特征字操作数队列微程序控制部件可编程移位器算术运算部件临时寄存器寄存器栈数据状态地址NEU指令数据总线小数总线接口浮点运算器浮点运算器浮点运算方法浮点运算方法2.CPU之内的浮点运算器3.浮点运算部件采用流水线设计。