四章节数据机器运算

上传人:cl****1 文档编号:579519935 上传时间:2024-08-26 格式:PPT 页数:95 大小:647.52KB
返回 下载 相关 举报
四章节数据机器运算_第1页
第1页 / 共95页
四章节数据机器运算_第2页
第2页 / 共95页
四章节数据机器运算_第3页
第3页 / 共95页
四章节数据机器运算_第4页
第4页 / 共95页
四章节数据机器运算_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《四章节数据机器运算》由会员分享,可在线阅读,更多相关《四章节数据机器运算(95页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 数据的机器运算数据的机器运算n计算机的主要功能是对数据进行各种加工和处理,包括计算机的主要功能是对数据进行各种加工和处理,包括加、减、乘、除这些基本的算术运算,与、或、非这些加、减、乘、除这些基本的算术运算,与、或、非这些基本的逻辑运算,以及由此构成的其它复杂的运算。基本的逻辑运算,以及由此构成的其它复杂的运算。运运算器则是实现这些运算的主要部件算器则是实现这些运算的主要部件。n无论多么复杂的运算,最终都要分解为加法运算来实现。无论多么复杂的运算,最终都要分解为加法运算来实现。其中,减法运算通过补码转化为加法来实现其中,减法运算通过补码转化为加法来实现 ;乘、除运;乘、除运算可以

2、转换为加减运算、移位操作来实现。加法和移位算可以转换为加减运算、移位操作来实现。加法和移位是计算机中最基本的两种运算操作。是计算机中最基本的两种运算操作。n可见,可见,加法器又是运算器的核心部件加法器又是运算器的核心部件。在加法器的基础。在加法器的基础上增加移位功能,并通过选择输入控制条件,就可以实上增加移位功能,并通过选择输入控制条件,就可以实现所有的运算。现所有的运算。 1本章主要内容本章主要内容主要内容主要内容n算术、逻辑运算的实现算术、逻辑运算的实现n定点加、减运算定点加、减运算n数的移位和舍入操作数的移位和舍入操作n定点乘、除运算定点乘、除运算n规格化浮点运算规格化浮点运算2一、一、

3、算术逻辑运算的实现算术逻辑运算的实现 计计算算机机中中最最基基本本的的算算术术运运算算是是加加法法运运算算,不不论论加加、减减、乘乘、除除运运算算最最终终都都可可以以归归结结为为加加法法运运算算。所所以以首首先先讨讨论论最最基基本本、最最核核心心的的运运算算部部件件加加法法器器,以及并行加法器的进位问题。以及并行加法器的进位问题。加加法法器器是是由由全全加加器器和和其其它它必必要要的的逻逻辑辑电电路路组组成成的的,所以我们从全加器开始讨论。所以我们从全加器开始讨论。31 1、全加器(、全加器(FA)n全加器(全加器(FA)是最基本是最基本的运算单元,由它构成的运算单元,由它构成加法器。加法器。

4、n全加器有全加器有三个输入量三个输入量:操作数操作数Ai、Bi、以及低以及低位传来的进位信号位传来的进位信号Ci-1。n全加器有全加器有两个输出量两个输出量:本位和本位和Si、以及向高位以及向高位的进位信号的进位信号Ci。 Ai Bi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 全加器真值表全加器真值表4全加器的全加器的逻辑方程和电路逻辑方程和电路根据真值表得:根据真值表得: Si=Ai Bi Ci-1Ci=AiBi+(Ai Bi)Ci-1Si: : 本位和

5、本位和Ci: : 向高位的进位向高位的进位实现电路实现电路逻辑框图逻辑框图一个全加器只完成一位加法一个全加器只完成一位加法5全加器构成加法器全加器构成加法器n全加器并不存储信息,可用门电路来实现。用全加全加器并不存储信息,可用门电路来实现。用全加器能够方便地构成加法器。加法器分为器能够方便地构成加法器。加法器分为串行加法器串行加法器和和并行加法器并行加法器。 n串行加法器只有一个全加器,数据逐位串行送入加串行加法器只有一个全加器,数据逐位串行送入加法器进行计算。由于运算速度慢,一般不用。法器进行计算。由于运算速度慢,一般不用。n并行加法器则由若干个这样的全加器构成,各位数并行加法器则由若干个这

6、样的全加器构成,各位数据同时运算。并行加法器的位数与操作数的位数相据同时运算。并行加法器的位数与操作数的位数相等。等。并行加法器的最并行加法器的最长运算运算时间主要取决于主要取决于进位信位信号的号的传递时间。例如:例如:1111和和0001相加,最低相加,最低位位产生的生的进位将逐位影响到最高位位将逐位影响到最高位. .n由此可由此可见,提高并行加法器速度的关,提高并行加法器速度的关键是是尽量加快尽量加快进位位产生和生和传递的速度的速度。62 2、进位产生与传递、进位产生与传递n进位链的概念:进位链的概念:并行加法器中的每一个全加器都有一个从低位送来的并行加法器中的每一个全加器都有一个从低位送

7、来的进位输入和一个传送给高位的进位输出。我们把构成进位输入和一个传送给高位的进位输出。我们把构成进位信号产生和传递的逻辑网络称为进位信号产生和传递的逻辑网络称为进位链进位链。n进位链上每一位的进位表达式为:进位链上每一位的进位表达式为:Ci=AiBi+(Ai Bi)Ci-1设设Gi=AiBi,称为称为进位产生函数进位产生函数Pi=Ai Bi,称为称为进位传递函数进位传递函数进位表达式进位表达式Ci=Gi+PiCi-17串行进位串行进位n把把n个全加器串联起来,就可以实现两个个全加器串联起来,就可以实现两个n位数的相加。这种加法器称位数的相加。这种加法器称为为串行进位串行进位的并行加法器,串行进

8、位又叫的并行加法器,串行进位又叫行波进位行波进位。 其中其中:C1=G1+P1C0C2=G2+P2C1 Cn=Gn+PnCn-1n串行进位的并行加法器,总的延迟时间正比于字串行进位的并行加法器,总的延迟时间正比于字长,字长越长,总延迟时间也越长。长,字长越长,总延迟时间也越长。n若一位进位需若一位进位需2ty时间,完成时间,完成n位进位就需要位进位就需要2nty.n要提高加法运算速度,必须改进进位方式。要提高加法运算速度,必须改进进位方式。 83 3、并行加法器的快速进位、并行加法器的快速进位l改改进进串串行行进进位位方方式式的的基基本本思思路路是是让让各各进进位位同同时时形形成成,避避免免各

9、各进进位位之之间的依赖关系。现在来分析一下进位关系。间的依赖关系。现在来分析一下进位关系。 展开展开C1=G1+P1C0;C2=G2+P2C1;,Cn=Gn+PnCn-1 得关系式:得关系式:C1=G1+P1C0C2=G2+P2C1=G2+P2G1+P2P1C0C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 以以上上进进位位输输出出只只与与Gi、Pi以以及及最最低低进进位位C0有有关关,而而且且不不依依赖赖于于其其低低位进位位进位Ci-1的输入,因此各级进位可以同时产生,形成的输入,

10、因此各级进位可以同时产生,形成并行进位。并行进位。9并行进位的特点并行进位的特点n并行进位的特点是各级进位信号同时形成,与字长无并行进位的特点是各级进位信号同时形成,与字长无关,提高了整体运算速度关,提高了整体运算速度 。并行进位又叫先行进位。并行进位又叫先行进位。n最长延迟时间仅为最长延迟时间仅为2ty。n随着加法器位数的增加,随着加法器位数的增加,Ci的逻辑表达式会变得越来的逻辑表达式会变得越来越长,输入变量会越来越多,电路结构也会变得越来越长,输入变量会越来越多,电路结构也会变得越来越复杂,导致电路实现也越来越困难。越复杂,导致电路实现也越来越困难。n并行进位方式需继续改进,才能有实用价

11、值。这就是并行进位方式需继续改进,才能有实用价值。这就是下面要介绍的分组进位方式。下面要介绍的分组进位方式。10n以以16位加法器为例,将其分为位加法器为例,将其分为4组,每组组,每组4位。位。n在组内,按照并行进位函数直接产生在组内,按照并行进位函数直接产生C1C4,这,这些进位可同时得到。实现这种进位逻辑的电路称为些进位可同时得到。实现这种进位逻辑的电路称为4位位先行进位电路(先行进位电路(CLA),如,如74181ALU。n利用这种利用这种4位一组的位一组的CLA电路和电路和4位全加器可以构位全加器可以构成成4位位CLA加法器。注意,加法器。注意,4位位CLA加法器包含了加法器包含了两部

12、分逻辑:两部分逻辑:4位全加器和位全加器和4位一组的先行进位链,位一组的先行进位链,这个组内的进位为一级进位。这个组内的进位为一级进位。n在组间,每个组的进位输入是前一个组的进位输出,在组间,每个组的进位输入是前一个组的进位输出,而每个组的进位输出是下一个组的进位输入而每个组的进位输出是下一个组的进位输入.构成构成1616位加法位加法器很容器很容易实现易实现 单级先行进位单级先行进位11单级先行进位(续一)单级先行进位(续一)n上述组内并行、组间串行的进位方式也称为单级先上述组内并行、组间串行的进位方式也称为单级先行进位方式,原理如下图所示。行进位方式,原理如下图所示。12单级先行进位(续二)

13、单级先行进位(续二)n组内并行、组间串行进位的时间图组内并行、组间串行进位的时间图(16位位)如下:如下:n完成进位时间完成进位时间8ty.n进位时间与组数成正比,组数越多,进位时间越长。进位时间与组数成正比,组数越多,进位时间越长。13多级先行进位多级先行进位n为说明问题,我们不妨仍以为说明问题,我们不妨仍以16位加法器为例,仍然位加法器为例,仍然4位一组,分成位一组,分成4个小组,先就第一小组的进位输出函个小组,先就第一小组的进位输出函数数C4做一下分析:做一下分析:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0G1*P1*=G1*+P1*C0nG1*称为称为组

14、进位产生函数组进位产生函数,P1*称为称为组进位传递函数组进位传递函数;这两个函数类似于进位产生函数这两个函数类似于进位产生函数G和进位传递函数和进位传递函数P.14多级先行进位(续一)多级先行进位(续一)n四个组内的最高进位四个组内的最高进位C16、C12、C8、C4可以分别表示为可以分别表示为: : C4 = G1* + P1* C0 C8 = G2* + P2* C4 C12 = G3* + P3* C8 C16 = G4* + P4* C12现在逐项代入、并展开得关系式:现在逐项代入、并展开得关系式:C4 = G1* + P1* C0C8 = G2*+P2*C4=G2*+P2*G1*

15、+P2*P1*C0C12 = G3*+P3*G2*+P3*P2*G1* +P3*P2*P1*C0C16 = G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0可以看出,这可以看出,这4组进位结构与前述组进位结构与前述4位先行进位逻辑完全相同,位先行进位逻辑完全相同,组间进位信号只与最低进位组间进位信号只与最低进位C0有关,所以能同时产生。有关,所以能同时产生。15多级先行进位(续二)多级先行进位(续二)n组内进位信号能同时产生、组间进位信号也能同时产组内进位信号能同时产生、组间进位信号也能同时产生,由此可以构成多级并行进位逻辑。生,由此可以构成多级

16、并行进位逻辑。16位位2级先行级先行进位加法器如下图所示。进位加法器如下图所示。16多级先行进位(续三)多级先行进位(续三)n问题是这问题是这4个组间进位信号如何用硬件来产生呢?个组间进位信号如何用硬件来产生呢?对于多级先行进位的实现可以按如下思路来理解:对于多级先行进位的实现可以按如下思路来理解:n先把单级先行进位加法器的串行进位链断开;先把单级先行进位加法器的串行进位链断开;n增加一级先行进位链,这个新增加的先行进位链的增加一级先行进位链,这个新增加的先行进位链的进位称为二级进位;进位称为二级进位;n组间进位信号组间进位信号C4、C8、C12、C16由二级进位链来产由二级进位链来产生,其逻

17、辑关系式已经得到;生,其逻辑关系式已经得到;n让一级进位链多产生两个辅助函数让一级进位链多产生两个辅助函数Gi*和和Pi*,并且,并且作为二级进位链的输入。作为二级进位链的输入。 17多级先行进位(续四)多级先行进位(续四)16位位2级级先行进位时间图先行进位时间图 进位产生次序如下:进位产生次序如下:n产生第一小组的产生第一小组的C1C3、所有所有组进位产生函数组进位产生函数Gi*和组进位传和组进位传递函数递函数Pi*,时间为时间为2ty.n由由CLA电路产生第二、三、四电路产生第二、三、四小组的组间进位信号小组的组间进位信号C4、C8、C12、C16,时间为时间为2ty.n产生第二、三、四

18、小组的组内产生第二、三、四小组的组内进位信号进位信号C5、C6、C7、C9、C10、C11、C13、C14、C15,时间为时间为2ty.184 4、多功能算术逻辑部件、多功能算术逻辑部件ALUn前面介绍了运算器的算术运算功能,为了完成多种算前面介绍了运算器的算术运算功能,为了完成多种算术逻辑运算,需要将加法器的功能进行扩展,扩展的术逻辑运算,需要将加法器的功能进行扩展,扩展的基本思想如下:基本思想如下:参加运算的两个数参加运算的两个数Ai、Bi和低位进位和低位进位Ci-1先不进行全加,先把两个输入先不进行全加,先把两个输入Ai、Bi和四个控制参数和四个控制参数S0、S1、S2、S3进进行组合,

19、形成函数行组合,形成函数Xi和和Yi,然后再将,然后再将Xi、Yi和低位进位和低位进位Ci-1通过全加器进行全加。通过全加器进行全加。这样一来,控制参数不同,得到的组这样一来,控制参数不同,得到的组合函数也不同,从而实现多种算术和合函数也不同,从而实现多种算术和逻辑运算。逻辑运算。 19算术逻辑部件算术逻辑部件ALUn算术逻辑部件算术逻辑部件ALU大体上有三部分组成:大体上有三部分组成:n全加器全加器n进位链进位链n输入选择器输入选择器n下面以下面以ALU的一位逻辑为例,原理性地说明的一位逻辑为例,原理性地说明算术、逻辑功能是如何实现的。算术、逻辑功能是如何实现的。20算术逻辑部件算术逻辑部件

20、ALU(续一)(续一)l一位加法器由全加器和进位门构一位加法器由全加器和进位门构成,其中,两个半加器构成全加成,其中,两个半加器构成全加器、与或非门构成一位进位门。器、与或非门构成一位进位门。l一位输入选择器,由两个与或非一位输入选择器,由两个与或非门构成,可输入门构成,可输入2个本位操作数个本位操作数或非、或非、4个控制信号(个控制信号(S3S0)l一个控制门一个控制门M,选择算逻运算。,选择算逻运算。当当M=0时,开门接收低位来的进时,开门接收低位来的进位信号,执行算术运算;当位信号,执行算术运算;当M=1时,关门不接收低位进位信号,时,关门不接收低位进位信号,执行逻辑运算,与进位无关。执

21、行逻辑运算,与进位无关。21算术逻辑部件算术逻辑部件ALU(续二)(续二)控制信号与选择器输出关系表:控制信号与选择器输出关系表:S3S2XiS1S0Yi00100Ai01Ai+Bi01AiBi10Ai+Bi10AiBi11Ai110 进位传递函数进位传递函数进位产生函数进位产生函数通过不同的输入选择,实现不同的功能,这进一步说明:数据是在传通过不同的输入选择,实现不同的功能,这进一步说明:数据是在传送过程实现运算、并得到处理的。多位送过程实现运算、并得到处理的。多位ALUALU的实现思路完全一样。的实现思路完全一样。225 5、运算器的组织、运算器的组织n运算器主要由算逻部件运算器主要由算逻

22、部件ALU、寄存器、多路转换、寄存器、多路转换器、内部数据总线组成。器、内部数据总线组成。n在运算器内部,各功能模块之间的连接大都采用在运算器内部,各功能模块之间的连接大都采用总线结构,称为运算器的内部总线,总线结构,称为运算器的内部总线,ALU和各寄和各寄存器都挂在上面。存器都挂在上面。n运算器大体上有如下三种结构:单总线结构、双运算器大体上有如下三种结构:单总线结构、双总线结构和三总线总线结构。总线结构和三总线总线结构。23l操作数需要分两次送入操作数需要分两次送入ALU,而,而且需要两个缓冲寄存器;完成一且需要两个缓冲寄存器;完成一次运算需要次运算需要3步。特点是控制电路步。特点是控制电

23、路简单,而速度较慢。简单,而速度较慢。 l两个操作数可以同时到达两个操作数可以同时到达ALU进行进行运算,且马上可以得到运算结果,运算,且马上可以得到运算结果,输出端需要设置一个缓冲寄存器输出端需要设置一个缓冲寄存器;完成一次运算需要完成一次运算需要2步步。l两条总线同时供给操作数,输出与两条总线同时供给操作数,输出与第三条总线相连;完成一次运算需第三条总线相连;完成一次运算需要要1步。特点是操作速度快,控制步。特点是操作速度快,控制相对复杂一些。相对复杂一些。运算器的运算器的3种组织结构种组织结构24二、定点加减运算二、定点加减运算 n原码加减运算原码加减运算n当原码做加减运算时,符号位不参

24、加运算,只当原码做加减运算时,符号位不参加运算,只在两数的绝对值之间进行。在两数的绝对值之间进行。n加法时可能要做减法(两数异号)、减法时又加法时可能要做减法(两数异号)、减法时又可能做加法(两数异号)。可能做加法(两数异号)。n操作结果需要根据绝对值的大小来确定运算结操作结果需要根据绝对值的大小来确定运算结果的符号。计算机中通常没有减法器,减法运果的符号。计算机中通常没有减法器,减法运算需要转换为加法来实现。算需要转换为加法来实现。结论:原码加减运算过程比较复杂,一般不用结论:原码加减运算过程比较复杂,一般不用. .251 1、补码加减运算、补码加减运算 补码加减运算的依据如下:补码加减运算

25、的依据如下:n和的补码等于补码的和和的补码等于补码的和nX+Y补补=X补补+Y补补n相反数的补码等于补码的相反数相反数的补码等于补码的相反数n-X补补=-X补补n差的补码等于补码的差差的补码等于补码的差nX-Y补补=X补补+-Y补补=X补补-Y补补 补码的运算规则:补码的运算规则: n参加运算的操作数用补码表参加运算的操作数用补码表示。示。n补码的符号位与数值位同时补码的符号位与数值位同时参加运算。参加运算。n若做加法,则两数补码直接若做加法,则两数补码直接相加;相加;若做减法,用被减数与减数若做减法,用被减数与减数的的机器负数机器负数相加。相加。n运算结果为和运算结果为和、差的补码。差的补码

26、。注注:机器负数等于补码连同机器负数等于补码连同符号位按位求反,末位加符号位按位求反,末位加1。26补码加减示例补码加减示例例例1、A=0.1011,B=-0.1110,求求A+B.解:解:A补补=0.1011,B补补=1.00100.1011+1.00101.1101A+B补补=1.1101A+B=-0.0011例例2、A=0.1011,B=-0.0010,求求A-B.解:解:A补补=0.1011,B补补=1.1110,-B补补=0.00100.1011+0.00100.1101A-B补补=0.1101A-B=0.1101272 2、补码加减溢出的判别、补码加减溢出的判别例例3、X=1011

27、,Y=111 求X+Y。 例例4、X=-1011,Y=-111 求X+Y。解解:X补=0,1011,Y补=0,0111 解解:X补=1,0101,Y补=1,10010,1011 (+11) 1,0101 (-11)+0,0111 (+7) + 1,1001 (-7 )1,0010 0,1110 X+Y补 =1,0010 X+Y补=0,1110 X+Y=-1110 (-14) X+Y=+1110 (+14) 出错原因在于用了出错原因在于用了4个二进制位来表示绝对值为个二进制位来表示绝对值为18的和数的和数。28补码加减运算溢出补码加减运算溢出n当运算结果超出了机器所能表示的范围时,当运算结果超出

28、了机器所能表示的范围时,数值位侵占了符号位,这种现象称为数值位侵占了符号位,这种现象称为溢出溢出。两个同符号的数相加会产生溢出。两个同符号的数相加会产生溢出。 n两个正数相加,结果大于机器所能表示的两个正数相加,结果大于机器所能表示的最大正数,称为最大正数,称为上溢(正溢)上溢(正溢)。n两个负数相加,结果小于机器所能表示的两个负数相加,结果小于机器所能表示的最小负数,称为最小负数,称为下溢(负溢)下溢(负溢)。29补码加减溢出的判别方法补码加减溢出的判别方法 判断溢出的三种基本方法:判断溢出的三种基本方法: 采用一个符号位判别采用一个符号位判别 l当参加运算的两个数的符号为当参加运算的两个数

29、的符号为0、而和的符号、而和的符号位为位为1时上溢;时上溢;l当参加运算的两个数的符号为当参加运算的两个数的符号为1、而和的符号、而和的符号位为位为0时下溢。时下溢。 判别条件为:溢出判别条件为:溢出= XsYsSs+XsYsSs其中,其中,Xs、Ys为参加运算两数的符号,为参加运算两数的符号, Ss为结果符号位。为结果符号位。30补码加减溢出的判别方法补码加减溢出的判别方法( (续续) ) 采用进位位判别采用进位位判别l两两个个正正数数相相加加,当当最最高高有有效效位位产产生生进进位位(C1=1)而而符号位不产生进位(符号位不产生进位(Cs=0)时,发生上溢;)时,发生上溢;l两两个个负负数

30、数相相加加,当当最最高高有有效效位位不不产产生生进进位位(C1=0)而符号位产生进位,发生下溢。而符号位产生进位,发生下溢。判别条件为:溢出判别条件为:溢出=CsC1+CsC1=Cs C1采用变形补码(双符号位补码)采用变形补码(双符号位补码)l采用变形补码检测,当运算结果的两符号位不一致采用变形补码检测,当运算结果的两符号位不一致时表示溢出。若符号位用时表示溢出。若符号位用Ss1Ss2表示,则表示,则Ss1Ss2=01结果上溢,结果上溢,Ss1Ss2=10结果下溢结果下溢.判别溢出的条件为:判别溢出的条件为:溢出溢出=Ss1 Ss2SS1始终正确始终正确313 3、补码定点加减运算器的基本组

31、成、补码定点加减运算器的基本组成 l补码加法:补码加法:在在XF、YF、FX三个控制三个控制信号的控制下,打开门信号的控制下,打开门A、门、门B和门和门C,把寄把寄存器存器X和寄存器和寄存器Y的内的内容送入加法器的两个输容送入加法器的两个输入端进行加法运算,把入端进行加法运算,把结果送回寄存器结果送回寄存器X中中.l补码减法:与补码加法补码减法:与补码加法不同之处在于要用不同之处在于要用YF来代替来代替YF、并、并在在1F控制信号作用控制信号作用下使结果加下使结果加1,即可完,即可完成补码减法运算。成补码减法运算。32三、带符号数的移位与舍入三、带符号数的移位与舍入 n移位移位是算术、逻辑运算

32、的又一基本操作,而且几乎是算术、逻辑运算的又一基本操作,而且几乎所有机器的指令系统都设有移位指令。所有机器的指令系统都设有移位指令。比如,乘法比如,乘法运算大多数是通过运算大多数是通过“累加累加移位移位”来实现的。来实现的。n算术移位操作时,算术移位操作时,符号位不变符号位不变,数值大小则会发生,数值大小则会发生变化。左移一位相当于乘以变化。左移一位相当于乘以2,右移一位相当于除,右移一位相当于除以以2,因为移位使位权发生了变化,因为移位使位权发生了变化。n在移位过程中,有效数位会被移出数据字而丢失。在移位过程中,有效数位会被移出数据字而丢失。因此,还需要考虑数据的舍入问题,以尽可能提高因此,

33、还需要考虑数据的舍入问题,以尽可能提高数据的表示精度。数据的表示精度。331 1、移位规则、移位规则 n原码移位规则原码移位规则n符号位不变符号位不变n空出位补空出位补0例如:例如:1X1X2X3Xn左移后为:左移后为:1X2X3Xn0右移后为:右移后为:10X1X2Xn-1n补码移位规则补码移位规则n符号位不变符号位不变n左移时,空出位补左移时,空出位补0n右移时,符号位补充空出位右移时,符号位补充空出位例如:例如:1X1X2X3Xn左移后为:左移后为:1X2X3Xn0右移后为:右移后为:11X1X2Xn-1算术左移在不产生溢出时,算术左移在不产生溢出时,符号位保持不变。符号位保持不变。 我

34、们用的微机使用补码我们用的微机使用补码来表示数据来表示数据. 342 2、移位器逻辑电路、移位器逻辑电路 n移位器移位器是由与是由与门和或和或门组成的成的逻辑电路(路(实际是一个是一个多路多路选择器),可以器),可以实现直直传(不移位)、左斜一位(不移位)、左斜一位送(左移一位)和右斜一位送(右移一位)的功能。送(左移一位)和右斜一位送(右移一位)的功能。移位器移位器逻辑电路如路如图所示。所示。 左移由左移由2FL控制,控制,Fi-1Li直传由直传由FL来控制,来控制,FiLi右移由右移由F/2L来控制,来控制,Fi+1Li移位器无数据寄存能力。移位器无数据寄存能力。353 3、舍入操作、舍入

35、操作 n舍入操作有以下几种:舍入操作有以下几种:n截断法截断法:无条件地舍去多余的位。无条件地舍去多余的位。n恒置恒置1法法:舍去多余位,保留部分最低位置舍去多余位,保留部分最低位置1。 n0舍舍1入法入法:舍去部分的最高位为舍去部分的最高位为1时,则保留部时,则保留部分末位加分末位加1,与四舍五入法类似,与四舍五入法类似。n截断法和恒置截断法和恒置1法误差比较大;法误差比较大;0舍舍1入法比较合理,入法比较合理,但当保留部分为但当保留部分为0.111时,会导致再次溢出。末时,会导致再次溢出。末位恒置位恒置1,在除法中非常有用。,在除法中非常有用。36四、定点乘法运算四、定点乘法运算 乘法运算

36、要比加法运算复杂。先举一个大家熟悉的手工定点乘法乘法运算要比加法运算复杂。先举一个大家熟悉的手工定点乘法的例子;之后我们来看,如果将手工运算改为机器运算,会出现的例子;之后我们来看,如果将手工运算改为机器运算,会出现什么问题?该如何解决?什么问题?该如何解决?l例:例:0.11010.1011=?0.11010.1011110111010000+11010.10001111l手工计算的二进制乘法规则:手工计算的二进制乘法规则:数值位:数值位: 00 = 0 10 = 0 11 = 1,逻辑与。,逻辑与。符号位:符号位: 同号相乘为正同号相乘为正 异号相乘为负,逻辑异或异号相乘为负,逻辑异或其结

37、果:乘积其结果:乘积 = 符号位符号位 / 数值位。数值位。 37乘法:由手工计算到机器运算乘法:由手工计算到机器运算n由手工计算到机器运算,需要解决由手工计算到机器运算,需要解决3个问题:个问题:n符号如何处理?符号如何处理?n多个部分积如何相加?多个部分积如何相加?n为保持两次部分积之间的位权对应关系,会导致加法器位数的增为保持两次部分积之间的位权对应关系,会导致加法器位数的增加,能否在不增加位数的情况下保持位权对应?加,能否在不增加位数的情况下保持位权对应?n由于解决方式的不同,形成了两种主要的乘法器结构由于解决方式的不同,形成了两种主要的乘法器结构n采用常规的加法器来实现采用常规的加法

38、器来实现n将将n位乘法转换为位乘法转换为n次累加和移位,每次处理次累加和移位,每次处理1位。位。n为避免加法器位数的扩充,可以把手工计算时的新部分积为避免加法器位数的扩充,可以把手工计算时的新部分积“左移左移累加累加”改为机器运算的原部分积改为机器运算的原部分积“累加累加右移右移”。n采用阵列乘法器实现采用阵列乘法器实现n利用中大规模集成电路把多项部分积同时相加,这种结构的利用中大规模集成电路把多项部分积同时相加,这种结构的乘法器称为阵列乘法器。乘法器称为阵列乘法器。 381 1、原码一位乘法、原码一位乘法 n原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相原码一位乘法是从手算演变而来

39、的,即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负同号为正,异号为负).乘积乘积P=|X|Y|符号符号Ps=Xs Ysn原码一位乘法的规则原码一位乘法的规则被乘数和乘数取绝对值。被乘数和乘数取绝对值。乘数的最低位为乘数的最低位为1时,部分积加被乘数,否则加时,部分积加被乘数,否则加0。部分积和乘数右移一位。部分积和乘数右移一位。重复重复,直到乘数全部移出。,直到乘数全部移出。积的符号由两乘数符号的异或得到。积的符号由两乘数符号的异或得到。积的符号与积的数值拼接得到积的原码。积的符号与积的数值拼接得到积的原码。39原码一位乘示

40、例原码一位乘示例实际运算的准备工作:实际运算的准备工作:n|被乘数被乘数|B寄存器寄存器n|乘数乘数|C寄存器(将要存放部分积的低位)寄存器(将要存放部分积的低位)n0A寄存器(将要存放部分积的高位)寄存器(将要存放部分积的高位)例例4:已知:已知:X=0.1101,Y=-0.1011,求求:XY。解:解:|X|=00.1101B(被乘数采用双符号位被乘数采用双符号位)|Y|=.1011C(乘数取数值乘数取数值)0A40AC说明说明原码一位乘原码一位乘00.00001011+|X|00.1101C4=1,+|X|00.110100.01101101部分积右移一位部分积右移一位01.0011+|

41、X|00.1101C4=1,+|X|00.10011110部分积右移一位部分积右移一位+000.0000C4=0,+000.100100.01001111部分积右移一位部分积右移一位+|X|00.1101C4=1,+|X|01.000100.10001111部分积右移一位部分积右移一位Ps=Xs Ys=0 1=1X Y=-0.1000111141原码一位乘法的硬件实现原码一位乘法的硬件实现 nA、B为为n+2位,位,C为为n位,加法器位,加法器为为n+2位,异或门。位,异或门。nA、C寄存器级连在一起,具有右寄存器级连在一起,具有右移功能。每次移位时,移功能。每次移位时,A的最低位的最低位进入

42、进入C的最高位,而的最高位,而C的最低位被的最低位被丢掉。最后,丢掉。最后,A的内容为乘积的高的内容为乘积的高位部分,位部分,C的内容为乘积的低位部的内容为乘积的低位部分。分。nC的最低位作为控制信号,控制运的最低位作为控制信号,控制运算器加被乘数还是加零。算器加被乘数还是加零。422 2、补码一位乘法、补码一位乘法 n原码乘法虽然容易实现,但一般计算机中数据多以补码表原码乘法虽然容易实现,但一般计算机中数据多以补码表示。若仍用原码做乘法,需要进行码制转换,反倒不方便示。若仍用原码做乘法,需要进行码制转换,反倒不方便而且又影响速度。而且又影响速度。n因为补码符号位直接参加运算,所以补码乘法不能

43、简单地因为补码符号位直接参加运算,所以补码乘法不能简单地套用原码乘法的算法。实现补码乘法有套用原码乘法的算法。实现补码乘法有2种方法。种方法。n一种方法为一种方法为校正法校正法,使用较少,只给出算式:,使用较少,只给出算式:XY补补=X补补(0.X1X2Xn)-X补补Yn另一种更好的方法为另一种更好的方法为比较法比较法,该算法是英国人,该算法是英国人Booth夫妇夫妇提出,所以也称为提出,所以也称为Booth法。该算法无需校正,控制较为法。该算法无需校正,控制较为简单。以下主要讨论比较法。简单。以下主要讨论比较法。43Booth的推导的推导设:被乘数设:被乘数X补补=X.X1X2Xn,乘数,乘

44、数Y补补=Y.Y1Y2Yn,则:,则:XY补补=X补补0.Y1Y2Yn-X补补Y=X补补2-1Y1+2-2Y2+2-nYn-X补补Y=X补补-Y+2-1Y1+2-2Y2+2-nYn=X补补-Y+(Y1-2-1Y1)+(2-1Y2-2-2Y2)+(2-(n-1)Yn-2-nYn)=X补补(Y1-Y)+(Y2-Y1)2-1+(0-Yn)2-n=X补补(Y1-Y)+(Y2-Y1)2-1+(Yn+1-Yn)2-n;Yn+1=0上式表明:上式表明:XY补补可以根据乘数相邻两项的比较结果,可以根据乘数相邻两项的比较结果,即用即用“低位低位-高位高位”的值来确定每步的运算操作。的值来确定每步的运算操作。44

45、Booth法的递推公式法的递推公式从前面的推导中得出递推公式:从前面的推导中得出递推公式:Z0补补=0Z1补补=2-1Z0补补+(yn+1-yn)X补补Z2补补=2-1Z1补补+(yn-yn-1)X补补 Zn补补=2-1Zn-1补补+(y2-y1)X补补XY补补=Zn补补+(y1-ys)X补补式中,式中,Z0补补为初始部分积,为初始部分积,Z1补补Zn补补为每次累加并右移之后的部分积。为每次累加并右移之后的部分积。XY补补=X补补(y1-y0)+(y2-y1)2-1+(yn+1-yn)2-nn1245Booth乘法运算规律与规则乘法运算规律与规则n判断位判断位YnYn+1操操作作00原部分积右

46、移一位原部分积右移一位01原部分积加原部分积加X补补后右移一位后右移一位10原部分积加原部分积加-X补补后右移一位后右移一位11原部分积右移一位原部分积右移一位n参加运算的数用补码表示,结果也是补码;符号位直接参加运算。参加运算的数用补码表示,结果也是补码;符号位直接参加运算。 n乘数最低位后面增加一位附加位乘数最低位后面增加一位附加位Yn+1,初值为初值为0。n乘数的最低两位乘数的最低两位YnYn+1的值决定每次执行的操作。的值决定每次执行的操作。 n部分积和乘数一起右移一位。部分积和乘数一起右移一位。 n共做共做n+1次累加、次累加、n次移位,最后累加不移位。次移位,最后累加不移位。由于符

47、号位参加运算,部分积累加时最高有效位的进位可能侵占符由于符号位参加运算,部分积累加时最高有效位的进位可能侵占符号位,所以被乘数和部分积应取双符号位,乘数只需取一个符号位号位,所以被乘数和部分积应取双符号位,乘数只需取一个符号位规律规律规则规则46补码一位乘示例补码一位乘示例例例5:已知:已知:X=-0.1101,Y=0.1011;求:求:XY。解:解:X补补=11.0011B,Y补补=0.1011C,-X补补=00.11010A运算过程见下页:运算过程见下页:47补补码一位乘码一位乘AC附加位附加位说明说明00.00000.10110+-X补补00.1101C4C5=10,+-X补补00.11

48、0100.0110101011部分积右移一位部分积右移一位+000.0000C4C5=11,+000.011000.0011010101部分积右移一位部分积右移一位+X补补11.0011C4C5=01,+X补补11.011011.1011001010部分积右移一位部分积右移一位+-X补补00.1101C4C5=10,+-X补补00.100000.0100000101部分积右移一位部分积右移一位+X补补11.0011C4C5=01,+X补补11.0111X Y补补=1.01110001X Y=-0.1000111148补码一位乘法的硬件实现补码一位乘法的硬件实现nA、B、C为为n+2位,位,加法

49、器为加法器为n+2位。位。与或门有与或门有n+2个。个。n各器件的作用与原码各器件的作用与原码一位乘法相同。控制一位乘法相同。控制方式上有所不同,即方式上有所不同,即由由C寄存器的最低两寄存器的最低两位来控制加、减被乘位来控制加、减被乘数或加数或加0操作。操作。 493 3、阵列乘法器、阵列乘法器 为了提高乘法运算速度,还可以采用高速阵列乘法器为了提高乘法运算速度,还可以采用高速阵列乘法器执行乘法运算。执行乘法运算。设有两个设有两个不带符号不带符号的二进制整数:的二进制整数: A、B两数的乘积两数的乘积P为:为:假设,当假设,当m=n=4时,来考虑乘法的情况:时,来考虑乘法的情况: 50阵列乘

50、法器原理阵列乘法器原理a3a2a1a0b3b2b1b0a3b0a2b0a1b0a0b0a3b1a2b1a1b1a0b1a3b2a2b2a1b2a0b2+a3b3a2b3a1b3a0b3P7p6p5p4p3p2p1p051阵列乘法器原理(续一)阵列乘法器原理(续一)n一个基本乘法单元由两部分组成:一个基本乘法单元由两部分组成:naibi是逻辑与运算,可用与门实现是逻辑与运算,可用与门实现n错位相加可用全加器完成错位相加可用全加器完成基本乘法单元原理图基本乘法单元原理图52阵列乘法器原理(续二)阵列乘法器原理(续二)由乘法单元构成的乘法器如图所示,每个方框代表一个基本乘法单元由乘法单元构成的乘法器

51、如图所示,每个方框代表一个基本乘法单元.53阵列乘法器原理(三阵列乘法器原理(三)n构成构成nn整数阵列乘法器,共需要整数阵列乘法器,共需要nn个个乘法单元。乘法单元。n若采用补码相乘时,可在上述乘法阵列外若采用补码相乘时,可在上述乘法阵列外增加三个求补器,两个为增加三个求补器,两个为算前求补器算前求补器,将两个操作数先变成正整数,一个为将两个操作数先变成正整数,一个为算算后求补器后求补器,在相乘两数符号不一致时,在相乘两数符号不一致时,把运算结果变成补码把运算结果变成补码。54五、定点除法运算五、定点除法运算 n大家很熟悉除法运算。手工计算大家很熟悉除法运算。手工计算除法的关键是比较余除法的

52、关键是比较余数与除数的大小,根据比较结果决定商值。数与除数的大小,根据比较结果决定商值。n问题是,当将手工计算转换为机器运算时,如何判断问题是,当将手工计算转换为机器运算时,如何判断够减?如何处理符号位?如何提高运算速度?够减?如何处理符号位?如何提高运算速度?n除法运算是乘法运算的逆运算。乘法通过除法运算是乘法运算的逆运算。乘法通过加加- -右移右移实实现现,不难想到机器除法运算是通过,不难想到机器除法运算是通过减减-左移左移实现的。实现的。n机器实现除法运算有两个先决条件(纯小数):机器实现除法运算有两个先决条件(纯小数):n除数不等于除数不等于0,否则商为无穷大。,否则商为无穷大。n被除

53、数要小于除数,否则商会溢出。被除数要小于除数,否则商会溢出。551 1、原码恢复余数法、原码恢复余数法 n所谓恢复余数法,不管被除数(或部分余数)是否所谓恢复余数法,不管被除数(或部分余数)是否够减除数,都一律先做减法。若部分余数为正,表够减除数,都一律先做减法。若部分余数为正,表示够减,该位商上示够减,该位商上“1 1”;若部分余数为负,表示不;若部分余数为负,表示不够减,该位商上够减,该位商上“0 0”,并要恢复余数(加除数)。,并要恢复余数(加除数)。n恢复余数法恢复余数法固有的缺点固有的缺点:n由于部分余数的正、负是随机出现的,使得除法由于部分余数的正、负是随机出现的,使得除法运算的实

54、际运算的实际操作次数不固定操作次数不固定,控制控制电路路较复复杂。n在恢复余数时,要在恢复余数时,要多作一次加法多作一次加法,降低了除法的,降低了除法的执行的速度。执行的速度。 562 2、原码不恢复余数法、原码不恢复余数法n分析恢复余数法发现,当减除数操作使得余数为负数时,分析恢复余数法发现,当减除数操作使得余数为负数时,商为商为“0”,并恢复余数,然后左移,再减除数。,并恢复余数,然后左移,再减除数。若用若用R表示余数,用表示余数,用B表示除数,上述操作过程可表示为:表示除数,上述操作过程可表示为:(R+B)2B=2R+B结论:当余数为负时,商上结论:当余数为负时,商上“0”,余数左移一次

55、后加除数,余数左移一次后加除数,结果不变。这就是结果不变。这就是不恢复余数法不恢复余数法的实现思想。的实现思想。n不恢复余数法(加减交替法)的运算规则为:不恢复余数法(加减交替法)的运算规则为:n若余数若余数0,上商,上商“1”,余数左移一位,减除数。,余数左移一位,减除数。n若余数若余数0,上商,上商“0”,余数左移一位,加除数。,余数左移一位,加除数。n由于加减运算交替地进行,所以又称为由于加减运算交替地进行,所以又称为原码加减交替法原码加减交替法。57原码不恢复余数法示例原码不恢复余数法示例除法运算需要除法运算需要3个寄存器:个寄存器:nA寄存器存放被除数:寄存器存放被除数:被除数被除数

56、AnB寄存器存放除数:寄存器存放除数:除数除数BnC寄存器存放商:寄存器存放商:商商C例例6:已知:已知:X=-0.10101,Y=0.11110,求:求:XY。解:解:|X|=00.10101A,0C|Y|=00.11110B,-|Y|=11.0001058原码不恢原码不恢复余数法复余数法AC说明说明00.101010.00000-|Y|11.00010-|Y|11.101110.00000余数为负,商011.01110左移一位+|Y|00.11110+|Y|00.011000.00001余数为正,商100.11000左移一位-|Y|11.00010-|Y|11.110100.00010余数

57、为负,商011.10100左移一位 +|Y|00.11110+|Y|00.100100.00101余数为正,商101.00100左移一位-|Y|11.00010-|Y|00.001100.01011余数为正,商100.01100左移一位-|Y|11.00010-|Y|11.011100.10110余数为负,商0+|Y|00.11110恢复余数,恢复余数,+|Y|00.01100原码原码需要需要59原码不恢复余数法示例(续)原码不恢复余数法示例(续)Qs=Xs Ys=1 0=1商商=0.10110余数余数=0.01100 2-5XY=-(0.10110+)0.01100 2-50.11110需要

58、注意几点:需要注意几点: 1 1、不恢复余数法,被除数、除数需要取双符号位。、不恢复余数法,被除数、除数需要取双符号位。2 2、如果最终余数为负,必须恢复一次余数且不需左移。、如果最终余数为负,必须恢复一次余数且不需左移。 3 3、符号位不参加原码运算,应单独处理。、符号位不参加原码运算,应单独处理。60原码不恢复余数法的硬件实现原码不恢复余数法的硬件实现nA、B寄存器,寄存器,n+2位位C寄存器,寄存器,n+1位位加法器,加法器,n+2位位与或门,与或门,n+2个个nA、C寄存器级连在一起,具寄存器级连在一起,具有左移一位功能。每次移位时,有左移一位功能。每次移位时,C的最高位进入的最高位进

59、入A的最低位,的最低位,而而C的最低位用来保存每次运的最低位用来保存每次运算得到的商。算得到的商。A的初值为被除的初值为被除数,最后变为余数,数,最后变为余数,C的内容的内容为除法得到的商。为除法得到的商。在运算过程中,由余数的符号在运算过程中,由余数的符号决定商值和下一步操作,即控决定商值和下一步操作,即控制运算器加除数还是减除数。制运算器加除数还是减除数。613 3、补码、补码不恢复余数除法不恢复余数除法n牢记补码的定义。如果牢记补码的定义。如果被除数和除数异号且够减,则被除数和除数异号且够减,则商为商为0,因为商将是负数的补码;原码正好相反。,因为商将是负数的补码;原码正好相反。 n除法

60、的实质是除法的实质是“减法减法”,当用补码表示的两个数执行,当用补码表示的两个数执行除法运算时,同号时应该做减法,异号时应该做加法。除法运算时,同号时应该做减法,异号时应该做加法。n当相除两数同号时,余数和除数也同号则够减,商为当相除两数同号时,余数和除数也同号则够减,商为1,因为商是正数,因为商是正数,补码补码 = 原码;原码;当相除两数异号时,当相除两数异号时,余数和除数同号则不够减,商也为余数和除数同号则不够减,商也为1,因为商为负数,因为商为负数,补码补码 = 反码反码+2-n (或(或+1) 。62关于除法的够除和不够除关于除法的够除和不够除63补码不恢复余数除法的补码不恢复余数除法

61、的上商上商和和商符商符1 1、只能通、只能通过余数和除数作比余数和除数作比较,判断是否够减。,判断是否够减。n被除数、除数被除数、除数同号同号,余数、除数同号则,余数、除数同号则够减够减,上商,上商1 1n被除数、除数被除数、除数异号异号,余数、除数同号,余数、除数同号不够减不够减,上商,上商1 1 所以,补码除法的上商规则可归结为:所以,补码除法的上商规则可归结为: 余数、除数同号,上商余数、除数同号,上商1 1 ; 余数、除数异号,上商余数、除数异号,上商0 0 。2、商的符号在求、商的符号在求商商的的过程中自程中自动形成形成:在除法的先决条件下(在除法的先决条件下(|X|Y|和和Y0)n

62、当被除数与除数同号当被除数与除数同号时,第一次除法肯定不,第一次除法肯定不够减,减,商商为0,恰恰好表示好表示正号正号;n当被除数与除数异号当被除数与除数异号时,部分余数一定跟除数同号,部分余数一定跟除数同号,商商为1,也恰好表示,也恰好表示负号号。举例说明举例说明64补码不恢复余数除法的补码不恢复余数除法的操作操作n补码加减交替法操作规则:补码加减交替法操作规则:n部分余数和除数同号,上商部分余数和除数同号,上商1 1,下一步左移一位、减除数;,下一步左移一位、减除数;n部分余数和除数异号,上商部分余数和除数异号,上商0 0,下一步左移一位、加除数。,下一步左移一位、加除数。n结果修正:结果

63、修正: n得到正商,不需要修正。得到正商,不需要修正。 n得到负商,实质上是商的反码,低位得到负商,实质上是商的反码,低位+1才能成为补码。才能成为补码。n一般的一般的处理方法理方法为:为:无无论正商正商还是是负商,末位恒置商,末位恒置为为1。 65补码不恢复余数除法示例补码不恢复余数除法示例例例7:已知已知X=0.1000,Y=-0.1010;求求XY。解:解:X补补=00.1000A,Y补补=11.0110B,0C-Y补补=00.101066补码不恢复补码不恢复余数除法余数除法AC说明说明00.10000.0000+Y补补11.0110X补补、Y补补异号,异号,+Y补补11.1100左移一

64、位左移一位+-Y补补00.1010+-Y补补00.01100.0010ri补补、Y补补异号,商异号,商000.1100左移一位左移一位+Y补补11.0110+Y补补00.00100.0100ri补补、Y补补异号,商异号,商0+Y补补11.0110+Y补补11.10100.1001ri补补、Y补补同号,商同号,商111.0100左移一位左移一位+-Y补补00.1010+-Y补补11.11100.0001ri补补、Y补补同号,商同号,商100.0100左移一位左移一位11.11101.0011末位恒置末位恒置1补码不补码不需校正需校正67补码不恢复余数除法示例(续)补码不恢复余数除法示例(续)商商

65、补补=1.0011余数余数补补=1.1110 2-4商商=-0.1101余数余数=-0.0010 2-4-0.0010 2-4-0.1010XY=-0.1101+1.1110 2-41.0110XY补补=1.0011+=-0.1101+0.0010 2-40.101068补码不恢复余数除法的硬件实现补码不恢复余数除法的硬件实现 n补码不恢复余数补码不恢复余数除法的硬件实现除法的硬件实现与原码基本相同,与原码基本相同,只是加减和上商只是加减和上商的条件不同,也的条件不同,也不需要异或门处不需要异或门处理符号位。理符号位。694 4、阵列除法器、阵列除法器 n可控加减单元可控加减单元CAS是构成是

66、构成阵列除法器的基本单元。阵列除法器的基本单元。由一个全加器和一个异或由一个全加器和一个异或门组成。如下图所示。门组成。如下图所示。n可控加减单元可控加减单元CAS有四个输入端和四个输出端。有四个输入端和四个输出端。当控制线当控制线P=0时,时,Yi P=Yi,全加器完成全加器完成Yi+Xi;当控制线当控制线P=1时,时,Yi P=Yi,全加器完成全加器完成Yi+Xi。 n同乘法一样,为提高除法的运算速度,可采用阵列除同乘法一样,为提高除法的运算速度,可采用阵列除法器。以下介绍法器。以下介绍两个正数的不恢复余数阵列除法器两个正数的不恢复余数阵列除法器。被除数被除数除数除数70阵列除法器原理阵列

67、除法器原理被除数被除数X各位沿竖直线送到各位沿竖直线送到CAS,除数除数Y沿斜线送到沿斜线送到CAS。做做加法还是做减法,由控制线加法还是做减法,由控制线P决定。由于是两正数相除,除法决定。由于是两正数相除,除法阵列第一行应执行减法操作,所以该行控制端阵列第一行应执行减法操作,所以该行控制端P=1,同时将同时将P作为该行末端的进位输入,从而完成减法运算。作为该行末端的进位输入,从而完成减法运算。如果够减,有进位,商为如果够减,有进位,商为1,下行做减法。如果不够减,无进,下行做减法。如果不够减,无进位,商为位,商为0,下行做加法。其它行工作同上,得出商和余数。,下行做加法。其它行工作同上,得出

68、商和余数。71商与进位的关系商与进位的关系n通过以下通过以下有模运算进位图有模运算进位图理解商与进位的关系:理解商与进位的关系:够减,有进位,商为够减,有进位,商为1;不够减,无进位,商为;不够减,无进位,商为0。72六、浮点运算六、浮点运算n浮点数比定点数的表示范围宽,有效精度高,更浮点数比定点数的表示范围宽,有效精度高,更适合于科学与工程计算的需要。适合于科学与工程计算的需要。 n浮点数中包含两组代码,采用浮点数中包含两组代码,采用定点整数定点整数格式的阶格式的阶码和采用码和采用定点小数定点小数格式的尾数。因此,浮点运算格式的尾数。因此,浮点运算实质上包含两组定点运算,阶码运算和尾数运算,

69、实质上包含两组定点运算,阶码运算和尾数运算,但这两部分运算既有各自的作用,也有相互间的但这两部分运算既有各自的作用,也有相互间的关联。关联。n主要讨论规格化浮点数的运算,并特别强调主要讨论规格化浮点数的运算,并特别强调对阶对阶和和规格化规格化两个概念。两个概念。 731 1、浮点加减运算、浮点加减运算 设两个浮点数设两个浮点数x和和y,分别为:分别为:x=2Ex.Mxy=2Ey.My两浮点数进行加减运算的规则为:两浮点数进行加减运算的规则为:当当ExEy时,时,z=xy=(Mx.2Ex-EyMy)2Ey当当ExEy时,时,z=xy=(MxMy.2Ey-Ex)2Ex提取提取大阶大阶74浮点加减运

70、算的操作过程浮点加减运算的操作过程0操作数检查操作数检查在两个浮点数中,如果有一个操作数为在两个浮点数中,如果有一个操作数为0,即可知道运算结果而,即可知道运算结果而没有必要进行后续的操作,这样可以节约时间。没有必要进行后续的操作,这样可以节约时间。对阶对阶两浮点数进行加减运算,首先要看阶码是否相同,即小数点位置两浮点数进行加减运算,首先要看阶码是否相同,即小数点位置是否对齐。如果两数的阶码不相等,说明小数点没有对齐,此时是否对齐。如果两数的阶码不相等,说明小数点没有对齐,此时必须使两数的阶码相等,这个过程叫必须使两数的阶码相等,这个过程叫对阶对阶。首先求出两数的阶差:首先求出两数的阶差:E=

71、ExEy:如果如果E=0,表明两阶码相等,对阶完成。,表明两阶码相等,对阶完成。如果如果E0,执行对阶,执行对阶,小阶向大阶看齐小阶向大阶看齐。尾数每右移一位,阶码加尾数每右移一位,阶码加1,直到两阶码相等为止;,直到两阶码相等为止;右移的位数等于阶差。右移的位数等于阶差。75浮点加减运算操作过程浮点加减运算操作过程( (续一续一) )尾数加减尾数加减Mz=MxMy,其算法与定点加减法相同。其算法与定点加减法相同。结果规格化(结果规格化(以补码表示为例以补码表示为例)n结果的形式为结果的形式为00.1xxx或者或者11.0xxx,已经是规格化数据。,已经是规格化数据。n结果的形式为结果的形式为

72、00.0xxx或者或者11.1xxx,尾数需要左移来规格化,尾数需要左移来规格化,称为左规。称为左规。n结果的形式为结果的形式为01.xxxx或者或者10.xxxx,表明尾数的绝对值大于,表明尾数的绝对值大于1,数值位侵占了符号位。尾数需要右移来规格化,称为右规。,数值位侵占了符号位。尾数需要右移来规格化,称为右规。舍入舍入n在对阶或者向右规格化时,尾数右移,字的低位部分可能移出字在对阶或者向右规格化时,尾数右移,字的低位部分可能移出字外而被丢掉,从而引起误差。因此需要进行舍入处理。外而被丢掉,从而引起误差。因此需要进行舍入处理。n舍入舍入处理方法很多,如理方法很多,如截断法、恒置截断法、恒置

73、1法、法、0舍舍1入法等。入法等。76浮点加减运算操作过程浮点加减运算操作过程( (续二续二) ) 溢出判断溢出判断 ( (注意:浮点数的溢出是以阶码溢出表现出来的注意:浮点数的溢出是以阶码溢出表现出来的) ) n如果阶码正常,加减运算即可正常结束;如果阶码正常,加减运算即可正常结束; n如果阶码超过了可能表示的最大正指数值,阶码如果阶码超过了可能表示的最大正指数值,阶码上溢,认为数据为上溢,认为数据为,发生溢出中断。,发生溢出中断。 n如果阶码超过了可能表示的最小负指数值,阶码如果阶码超过了可能表示的最小负指数值,阶码下溢,一般认为数据为下溢,一般认为数据为0。 n两个同号尾数相加,出现的最

74、高位向上的进位,两个同号尾数相加,出现的最高位向上的进位,在浮点数中不算溢出。在浮点数中不算溢出。77浮点加减运算示例浮点加减运算示例例例8:A=0.1011102-01,B=-0.1010112-10,求,求A+B。解:假设这两个数的格式为:解:假设这两个数的格式为:阶码阶码4位,用移码(偏置量位,用移码(偏置量23)表示;)表示;尾数尾数8位,用补码表示,含一位符号位。位,用补码表示,含一位符号位。A浮浮=0111;0.1011100B浮浮=0110;1.010101078浮点加减运算示例(续)浮点加减运算示例(续)n对阶对阶E=EA-EB=-1-(-2)=1EAEB,MB右移,右移,EB

75、+1EB,对阶得到:,对阶得到:MB浮浮=0111;1.1010101n尾数求和尾数求和00.1011100+11.101010100.0110001n 规格化规格化 尾数尾数需要需要左规:左规:A+B浮浮=0110;0.110001A+B=0.1100012-10n 未发生溢出。未发生溢出。 792 2、浮点乘除运算、浮点乘除运算 设两个浮点数设两个浮点数x和和y,分别为:分别为:x=2Ex.Mxy=2Ey.My两浮点数进行乘法运算的规则为:两浮点数进行乘法运算的规则为:xy=2(Ex+Ey)(MxMy)xy=2(ExEy)(MxMy)80浮点乘法运算步骤浮点乘法运算步骤l乘法运算的步骤如下

76、:乘法运算的步骤如下:两浮点数相乘,乘两浮点数相乘,乘积的的阶码为相乘两数的相乘两数的阶码之和,而乘之和,而乘积的的尾数尾数为相乘两数尾数之相乘两数尾数之积。阶码相加相加如果如果阶码用用补码表示,表示,阶码相加之和无需校正;相加之和无需校正;如果如果阶码用移用移码表示,表示,阶码相加后要减去一个偏相加后要减去一个偏置置量量2n。另外,如果相加后,和发生溢出,也要进行处理。另外,如果相加后,和发生溢出,也要进行处理。尾数相乘尾数相乘如果相乘两数都不为如果相乘两数都不为0,则可进行尾数相乘,尾数相乘的规则,则可进行尾数相乘,尾数相乘的规则与定点数乘法相同。与定点数乘法相同。尾数规格化尾数规格化如果

77、尾数不是规格化数,则需要规格化,一般需要进行左规。如果尾数不是规格化数,则需要规格化,一般需要进行左规。左规时,如果阶码发生下溢,做机器零处理。左规时,如果阶码发生下溢,做机器零处理。81浮点数除法运算步骤浮点数除法运算步骤l除法运算的步骤如下:除法运算的步骤如下:两浮点数相除,商的两浮点数相除,商的阶码为相除两数的相除两数的阶码之差,商的尾数之差,商的尾数为相除两数的尾数之商。相除两数的尾数之商。 尾数尾数调整整 被除数尾数的绝对值要小于除数尾数的绝对值,否则要被除数尾数的绝对值要小于除数尾数的绝对值,否则要通通过被被除数尾数的右移作出除数尾数的右移作出调整,每右移一次,其整,每右移一次,其

78、阶码加加1。阶码相减相减如果如果阶码用用补码表示,表示,阶码相减之后无需校正;相减之后无需校正;如果阶码用移码表示,阶码相减后要加上一个偏移量如果阶码用移码表示,阶码相减后要加上一个偏移量2n。另外,如果相减后发生溢出,需另作处理。另外,如果相减后发生溢出,需另作处理。尾数相除尾数相除如果相除两数的尾数都不为如果相除两数的尾数都不为0,则可进行尾数相除。由于第一,则可进行尾数相除。由于第一步进行了调整,运算结果就是规格化数。步进行了调整,运算结果就是规格化数。823 3、浮点运算器的硬件实现、浮点运算器的硬件实现 浮点运算器由阶码运算部件和尾数运算部件组成。浮点运算器由阶码运算部件和尾数运算部

79、件组成。阶码运算部件阶码运算部件执行加执行加减两种运算、同时配合对阶或者规格化完成阶码的调整(减两种运算、同时配合对阶或者规格化完成阶码的调整(11););尾数尾数运算部件运算部件完成加、减、乘、除运算,以及尾数规格化和溢出处理。完成加、减、乘、除运算,以及尾数规格化和溢出处理。CPU之外的浮点运算器之外的浮点运算器例如例如80x87是美国是美国Intel公司为处理浮点数的运算生产的专用算术运算公司为处理浮点数的运算生产的专用算术运算处理器,它是配合处理器,它是配合80x86CPU进行算术运算的,又称为协处理器。进行算术运算的,又称为协处理器。它它相当于相当于CPU的一个的一个I/O设备,虽然

80、有自己的指令,但不能单独使用。,虽然有自己的指令,但不能单独使用。CPU之内的浮点处理器之内的浮点处理器例如奔腾例如奔腾CPU将浮点处理器包含在芯片内部,并且采用流水设计。它将浮点处理器包含在芯片内部,并且采用流水设计。它有有U、V两条流水线,指令执行过程分为两条流水线,指令执行过程分为8个过程段。个过程段。浮点流水运算部件浮点流水运算部件根据浮点运算步骤,分别设置专门硬件来完成特定的运算。根据浮点运算步骤,分别设置专门硬件来完成特定的运算。例如,浮例如,浮点数加减操作,点数加减操作,设置置4套硬件,分套硬件,分别完成求完成求阶差、差、对阶、尾数求和、尾数求和、规格化等操作,形成流水作格化等操

81、作,形成流水作业。成本虽高,但速度特快。成本虽高,但速度特快。83* *七、十进制整数的加法运算七、十进制整数的加法运算 在计算机中,十进制数是用在计算机中,十进制数是用BCD码表示的,由码表示的,由4位二进制数表示位二进制数表示1位十进制数。通常这种二进位十进制数。通常这种二进制表示的十进制数的运算规律是:先按二进制制表示的十进制数的运算规律是:先按二进制规则运算,然后根据不同的编码加以校正,从规则运算,然后根据不同的编码加以校正,从而得到十进制运算结果。而得到十进制运算结果。 841 1、84218421码加法规则码加法规则n两个两个8421码相加,按码相加,按“逢二进一逢二进一”原则进行

82、。原则进行。n当和当和9时,无需校正。时,无需校正。n当和当和9时,则加时,则加6校正。校正。n在在+6校正的同时,将产生向上一位的进位。校正的同时,将产生向上一位的进位。8584218421码加法校正关系码加法校正关系101000001010+6校正校正111000101011121001001100131001101101141010001110151010101111161011010000171011110001181100010010191100110011十进制十进制8421码码C4S4S3S2S1校正前二进制校正前二进制C4S4S3S2S1校正规则校正规则校校正正函函数数 = =

83、 C C4 4+ + S S4 4SS3 3+ + S S4 4SS2 2向上一位的向上一位的进位位C4=校正函数校正函数8684218421码加法器的构成码加法器的构成校正函数校正函数 = C= C4 4+ S+ S4 4SS3 3+ S+ S4 4SS2 2向上一位的向上一位的进位位C4=校正函数校正函数872 2、余、余3 3码的加法规则码的加法规则 n两个余两个余3码相加,按码相加,按“逢二进一逢二进一”的原则进行。的原则进行。n若其和没有进位,则减若其和没有进位,则减3校正。校正。n若其和有进位,则加若其和有进位,则加3校正。校正。88余余3 3码加法校正关系码加法校正关系十进制数十

84、进制数余余3码码C4S4S3S2S1校正前的二进制数校正前的二进制数C4S4S3S2S1校正与否校正与否01890001100100010110110000110001110111001111-3校正校正101118191001110100110111110010000100011100011001+3校正校正C4=0,-3校正校正C4=1,+3校正校正向上一位的进位向上一位的进位C4=C489余余3 3码加法器的构成码加法器的构成C4=0,-3校正;校正;C4=1,+3校正校正90* *八、逻辑运算与实现八、逻辑运算与实现 n计算机中除了加、减、乘、除等基本运算外,计算机中除了加、减、乘、除

85、等基本运算外,还可以对一个或两个逻辑数进行逻辑运算。所还可以对一个或两个逻辑数进行逻辑运算。所谓谓逻辑数逻辑数,是指不带符号的二进制数。逻辑运,是指不带符号的二进制数。逻辑运算是按位进行的,位与位之间没有进位与借位算是按位进行的,位与位之间没有进位与借位关系,所以关系,所以比算术运算要简单得多。比算术运算要简单得多。n逻辑运算主要指逻辑非、逻辑加、逻辑乘、逻逻辑运算主要指逻辑非、逻辑加、逻辑乘、逻辑异或四种基本运算,也就是我们平时所说的辑异或四种基本运算,也就是我们平时所说的与、或、非、异或与、或、非、异或操作。操作。911 1、逻辑非、逻辑非 n逻辑非就是求反操作,按位求反。常用变量上逻辑非

86、就是求反操作,按位求反。常用变量上方加一横来表示。方加一横来表示。假设:假设:Z是是X的逻辑非,其中:的逻辑非,其中:X=X0X1Xn, Z=Z0Z1Zn 则:则: Zi=Xi(i=0,1,n)n逻辑非可用非门,也就是反相器实现。逻辑非可用非门,也就是反相器实现。 922 2、逻辑乘、逻辑乘 n对两数进行逻辑乘,就是按位求它们的对两数进行逻辑乘,就是按位求它们的“与与”,所,所以逻辑乘也叫逻辑与。常用以逻辑乘也叫逻辑与。常用“”“”或者或者“”来表来表示。示。 假设:假设:Z是是X和和Y的逻辑与,的逻辑与, X=X0X1Xn,Y=Y0Y1Yn, Z=Z0Z1Zn 则:则: Zi=XiYi(i=

87、0,1,n)两数位相与,都为两数位相与,都为1 1时结果才为时结果才为1 1。n逻辑乘可用与门实现,也可以用或门和非门实现。逻辑乘可用与门实现,也可以用或门和非门实现。 933 3、逻辑加、逻辑加 n对两个数进行逻辑加,就是按位求它们的对两个数进行逻辑加,就是按位求它们的“或或”,所,所以逻辑加也叫逻辑或。常用以逻辑加也叫逻辑或。常用“”“”或者或者“+”+”表示。表示。 假设:假设:Z是是X和和Y的逻辑或的逻辑或, X=X0X1Xn,Y=Y0Y1Yn, Z=Z0Z1Zn 则:则: Zi=XiYi(i=0,1,n)两数两数位位相或,只要一个相或,只要一个为1 1结果就果就为1 1。n逻辑加可以用或加可以用或门实现,也可以用与,也可以用与门和非和非门实现。 944、逻辑异或n对两个数进行逻辑异或,就是按位求它们的模对两个数进行逻辑异或,就是按位求它们的模2和和(按位加按位加),所以也叫位加。常用,所以也叫位加。常用“ ”表示。表示。假设:假设:Z是是X和和Y的逻辑异或,的逻辑异或, X=X0X1Xn,Y=Y0Y1Yn, Z=Z0Z1Zn 则:则: Zi=XiYi(i=0,1,n)两数两数位位异或,异或,值不相同不相同时结果果为1 1。n逻辑异或可以用异或异或可以用异或门实现。 95

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

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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