《第4章 数值的机器运算.ppt》由会员分享,可在线阅读,更多相关《第4章 数值的机器运算.ppt(144页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章数值的机器运算1 运算器是计算机进行算术运算和逻运算器是计算机进行算术运算和逻辑运算的主要部件,运算器的逻辑结构辑运算的主要部件,运算器的逻辑结构取决于机器的指令系统、数据表示方法取决于机器的指令系统、数据表示方法和运算方法等。本章主要讨论数值数据和运算方法等。本章主要讨论数值数据在计算机中实现算术运算和逻辑运算的在计算机中实现算术运算和逻辑运算的方法,以及运算部件的基本结构和工作方法,以及运算部件的基本结构和工作原理。原理。2本章学习内容4.1 基本算术运算的实现基本算术运算的实现4.2 定点加减运算定点加减运算4.3 带符号数的移位和舍入操作带符号数的移位和舍入操作4.4 定点乘法运
2、算定点乘法运算4.5 定点除法运算定点除法运算4.6 规格化浮点运算规格化浮点运算4.7 十进制整数的加法运算十进制整数的加法运算4.8 逻辑运算与实现逻辑运算与实现4.9 运算器的基本组成与实例运算器的基本组成与实例3本章学习要求掌握:定点补码加法和减法运算方法掌握:定点补码加法和减法运算方法理解:理解:3种溢出检测方法种溢出检测方法理解理解:补码移位运算和常见的舍入操作方法:补码移位运算和常见的舍入操作方法了解了解:串行加法器与并行加法器串行加法器与并行加法器理解理解:进位产生和进位传递进位产生和进位传递掌握:定点原码、补码乘法运算方法掌握:定点原码、补码乘法运算方法掌握:定点原码、补码加
3、减交替除法运算方法掌握:定点原码、补码加减交替除法运算方法理解:浮点加减乘除运算理解:浮点加减乘除运算理解:逻辑运算理解:逻辑运算了解:运算器的基本结构及浮点协处理器了解:运算器的基本结构及浮点协处理器44.1 基本算术运算的实现 计计算算机机中中最最基基本本的的算算术术运运算算是是加加法法运运算算,不不论论加加、减减、乘乘、除除运运算算最最终终都都可可以以归归结结为为加加法法运运算算。所所以以在在此此讨讨论论最最基基本本的的运运算算部部件件加加法法器器,以以及及并并行行加加法法器器的进位问题。的进位问题。54.1.1 加法器 1.全加器全加器 全加器(全加器(FA)是最基本的加法单元,是最基
4、本的加法单元,它有三个输入量:操作数它有三个输入量:操作数Ai和和Bi、低位传低位传来的进位来的进位Ci-1,两个输出量:本位和两个输出量:本位和Si、向向高位的进位高位的进位Ci。图图4-1 全加器的逻辑框图全加器的逻辑框图 6全加器真值表AiBiCi-1SiCi00001111001100110101010101101001000101117 根据真值表,可得到全加器的逻辑表根据真值表,可得到全加器的逻辑表达式为:达式为:Si=AiBiCi-1 Ci=AiBi+(AiBi)Ci-1全加器的逻辑表达式82.串行加法器与并行加法器 加加法法器器有有串串行行和和并并行行之之分分。在在串串行行加加
5、法法器器中中,只只有有一一个个全全加加器器,数数据据逐逐位位串串行行送送入入加加法法器器进进行行运运算算;并并行行加加法法器器则则由由多多个个全全加加器器组组成成,其其位位数数的的多多少少取取决决于于机机器的字长,数据的各位同时运算。器的字长,数据的各位同时运算。9 串串行行加加法法器器具具有有器器件件少少、成成本本低低的的优优点点,但但运运算算速速度度太太慢慢,所所以以除除去去某某些些低低速速的的专专用用运运算器外很少采用。算器外很少采用。并并行行加加法法器器可可同同时时对对数数据据的的各各位位相相加加,但但存存在在着着一一个个加加法法的的最最长长运运算算时时间间问问题题。这这是是因因为为虽
6、虽然然操操作作数数的的各各位位是是同同时时提提供供的的,但但低低位位运运算算所所产产生生的的进进位位会会影影响响高高位位的的运运算算结结果果。例例如如:1111和和0001相相加加,最最低低位位产产生生的的进进位位将将逐逐位位影影响响至至最最高高位位,因因此此,并并行行加加法法器器的的最最长长运运算算时时间间主主要要是是由由进进位位信信号号的的传传递递时时间间决决定定的的,而而每每个个全全加加器器本本身身的的求求和和延延迟迟只只是是次次要要因因素素。很很明明显显,提提高高并并行行加加法法器器速速度度的的关关键键是是尽尽量量加加快进位产生和传递的速度。快进位产生和传递的速度。2.串行加法器与并行
7、加法器(续)10 并并行行加加法法器器中中的的每每一一个个全全加加器器都都有有一一个个从从低低位位送送来来的的进进位位输输入入和和一一个个传传送送给给高高位位的的进进位位输输出出。我我们们将将传传递递进进位位信信号号的的逻逻辑辑线线路路连连接接起起来来构构成成的的进进位位网网络络称称为为进进位链。每一位的进位表达式为:位链。每一位的进位表达式为:Ci=AiBi+(AiBi)Ci-1 其中:其中:Gi=AiBi为进位产生函数为进位产生函数 Pi=AiBi为进位传递函数为进位传递函数 进位表达式进位表达式Ci=Gi+PiCi-14.1.2 进位的产生和传递11图图4-3 串行进位的并行加法器串行进
8、位的并行加法器其中:其中:C1=G1+P1C0 C2=G2+P2C1 Cn=Gn+PnCn-1 串行进位的并行加法器 124.1.2 进位的产生和传递(续)串行进位的并行加法器的总延迟时串行进位的并行加法器的总延迟时间与字长成正比,字长越长,总延迟时间间与字长成正比,字长越长,总延迟时间就越长。假定,将一级就越长。假定,将一级“与门与门”、“或门或门”的延迟时间定为的延迟时间定为ty,从上述公式中可看从上述公式中可看出,每一级全加器的进位延迟时间为出,每一级全加器的进位延迟时间为2ty。在字长为在字长为n位的情况下,若不考虑位的情况下,若不考虑Gi、Pi的形成时间,从的形成时间,从C0Cn的最
9、长延迟时间的最长延迟时间为为2nty(设设C0为加法器最低位的进位输为加法器最低位的进位输入,入,Cn为加法器最高位的进位输出)。为加法器最高位的进位输出)。131.并行进位方式并行进位方式 并并行行进进位位又又叫叫先先行行进进位位、同同时时进进位位,其特点是各级进位信号同时形成。其特点是各级进位信号同时形成。C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1 +P4P3P2P1C0 4.1.3 并行加法器的快速进位 14 这种进位方
10、式是快速的,若不考虑这种进位方式是快速的,若不考虑Gi、Pi的形成时间,从的形成时间,从C0Cn的最长延迟的最长延迟时间仅为时间仅为2ty,而与字长无关。但是随着而与字长无关。但是随着加法器位数的增加,加法器位数的增加,Ci的逻辑表达式会变的逻辑表达式会变得越来越长,输入变量会越来越多,这会得越来越长,输入变量会越来越多,这会使电路结构变得很复杂,所以完全采用并使电路结构变得很复杂,所以完全采用并行进位是不现实的。行进位是不现实的。1.并行进位方式(续)15单级先行进位方式(组内并行、组间串行)单级先行进位方式(组内并行、组间串行)以以16位位加加法法器器为为例例,可可分分为为4组组,每每组组
11、4位位。第第一一小小组组组组内内的的进进位位逻逻辑辑函函数数C1、C2、C3、C4的的表表达达式式与与前前述述相相同同,它它们们是是同同时时产产生生的的,实实现现上上述述进进位位逻逻辑辑函函数数的的电电路路称称之之为为4位位先先行行进进位位电电路路CLA,其其延延迟迟时间是时间是2ty。利用这种利用这种4位的位的CLA电路以及进位产电路以及进位产生生/传递电路和求和电路可以构成传递电路和求和电路可以构成4位的位的CLA加法器。用加法器。用4个这样的个这样的CLA加法器,加法器,很容易构成很容易构成16位的单级先行进位加法器。位的单级先行进位加法器。2.分组并行进位方式1616位单级先行进位加法
12、器图图4-4 16位单级先行进位加法器位单级先行进位加法器1716位单级先行进位时间图图图4-5 16位单级先行进位时间图位单级先行进位时间图18 多级先行进位方式(组内并行、组间并行)多级先行进位方式(组内并行、组间并行)仍仍以以字字长长为为16位位的的加加法法器器作作为为例例子子,分分析析两两级级先先行行进进位位加加法法器器的的设设计计方方法法。第第一一小小组组的的进位输出进位输出C4可以变成两个与项相或:可以变成两个与项相或:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 =G1*+P1*C0 其中:其中:G1*=G4+P4G3+P4P3G2+P4P3P2G1
13、 P1*=P4P3P2P1 Gi*称为组进位产生函数称为组进位产生函数 Pi*称为组进位传递函数称为组进位传递函数2.分组并行进位方式(续)19依次类推,可以得到:依次类推,可以得到:C8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0 C12=G3*+P3*G2+P3*P2*G1*+P3*P2*P1*C0 C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C02.分组并行进位方式(续)20 成组先行进位电路成组先行进位电路BCLA,其延迟其延迟时间是时间是2ty。利用这种利用这种4位的位的BCLA电路以电路以及进位产生及进位产生/
14、传递电路和求和电路可以构传递电路和求和电路可以构成成4位的位的BCLA加法器。加法器。16位的两级先行位的两级先行进位加法器可由进位加法器可由4个个BCLA加法器和加法器和1个个CLA电路组成。电路组成。2.分组并行进位方式(续)2116位两级先行进位加法器图图4-6 16位两级先行进位加法器位两级先行进位加法器22 若不考虑若不考虑Gi、Pi的形成时间,的形成时间,C0经经过过2ty产生第一小组的产生第一小组的C1、C2、C3及所有及所有组进位产生函数组进位产生函数Gi*和组进位传递函数和组进位传递函数Pi*;再经过再经过2ty,由由CLA电路产生电路产生C4、C8、C12、C16;再经过再
15、经过2ty后,才能产生第二、后,才能产生第二、三、四小组内的三、四小组内的C5C7、C9C11、C13C15。此时加法器的最长进位延迟时间是此时加法器的最长进位延迟时间是6ty。2.分组并行进位方式(续)2316位两级先行进位时间图图图4-7 16位两级先行进位时间图位两级先行进位时间图24 定定点点数数的的加加减减运运算算包包括括原原码码、补补码码和和反反码码3种种带带符符号号数数的的加加减减运运算算,其其中中补补码加减运算实现起来最方便。码加减运算实现起来最方便。4.2 定点加减运算25原码加减运算规则:原码加减运算规则:参加运算的操作数取其绝对值;参加运算的操作数取其绝对值;若若做做加加
16、法法,则则两两数数直直接接相相加加,若若做做减减法法,则将减数先变一次补,再进行加法运算;则将减数先变一次补,再进行加法运算;运算之后,可能有两种情况:运算之后,可能有两种情况:有有进进位位,结结果果为为正正,即即得得到到正正确确的的结结果果。无无进进位位,结结果果为为负负,则则应应再再变变一次补,才能得到正确的结果。一次补,才能得到正确的结果。结果加上符号位。结果加上符号位。通通常常,把把运运算算之之前前的的变变补补称称为为前前变变补补,运运算之后的变补称为后变补。算之后的变补称为后变补。4.2.1 原码加减运算 264.2.2 补码加减运算1.补码加法补码加法 两两个个补补码码表表示示的的
17、数数相相加加,符符号号位位参参加加运运算算,且且两两数数和和的的补补码码等等于于两两数数补补码码之之和,即:和,即:X+Y补补=X补补+Y补补27 根据补码加法公式可推出:根据补码加法公式可推出:X-Y补补=X+(-Y)补补=X补补+-Y补补 从从补补码码减减法法公公式式可可以以看看出出,只只要要求求得得-Y补补,就就可可以以变变减减法法为为加加法法。不不管管Y的的真真值值为为正正或或为为负负,已已知知Y补补求求-Y补补的的方方法法是是:将将Y补补连连同同符符号号位位一一起起求求反反,末末尾尾加加“1”。-Y补补被被称称为为Y补补的的机机器器负负数数,由由Y补补求求-Y补补的的过过程程称称为为
18、对对Y补补变变补补(求补),表示为(求补),表示为 -Y补补=Y补补变补变补2.补码减法282.补码减法(续)“某某数数的的补补码码表表示示”与与“变变补补”是是两两个个不不同同的的概概念念。一一个个负负数数由由原原码码转转换换成成补补码码时时,符符号号位位是是不不变变的的,仅仅对对数数值值位位各各位位变变反反,末末位位加加“1”。而而变变补补则则不不论论这这个个数数的的真真值值是是正正是是负负,一一律律连连同同符符号号位位一一起起变变反反,末末位位加加“1”。Y补补表表示示的的真真值值如如果果是是正正数数,则则变变补补后后-Y补补所所表表示示的真值变为负数,反之亦然。的真值变为负数,反之亦然
19、。例例1:Y=-0.0110,Y原原=1.0110,Y补补=1.1010,-Y补补=0.0110 例例2:Y=0.0110,Y原原=0.0110,Y补补=0.0110,-Y补补=1.101029 参加运算的两个操作数均用补码表示;参加运算的两个操作数均用补码表示;符号位作为数的一部分参加运算;符号位作为数的一部分参加运算;若若做做加加法法,则则两两数数直直接接相相加加,若若做做减减法法,则将被减数与减数的机器负数相加;则将被减数与减数的机器负数相加;运算结果仍用补码表示。运算结果仍用补码表示。3.补码加减运算规则30例例3:A=0.1011,B=-0.1110,求求A+B A补补=0.1011
20、 B补补=1.0010 0.1011 A补补 +1.0010 B补补 1.1101 A+B补补 A+B补补=1.1101 A+B=-0.0011补码加法示例31例例4:A=0.1011,B=-0.0010,求求A-B A补补=0.1011 B补补=1.1110 -B补补=0.0010 0.1011 A补补 +0.0010 -B补补 0.1101 A-B补补 A-B补补=0.1101 A-B=0.1101补码减法示例324.2.3 补码的溢出判断与检测方法 1.溢出的产生溢出的产生 在在补补码码运运算算中中,若若两两个个正正数数相相加加,而而结结果果为负;两个负数相加,而结果为正,则结果出错。为
21、负;两个负数相加,而结果为正,则结果出错。例例5:设:设:X=1011B=11D,Y=111B=7D 则则 X补补=0,1011,Y补补=0,0111 0,1 0 1 1X补补 +0,0 1 1 1Y补补 1,0 0 1 0X+Y补补 X+Y补补=1,0010 X+Y=-1110B=-14D 两正数相加结果为两正数相加结果为-14D,显然是错误的。显然是错误的。331.溢出的产生(续)例例6:设:设:X=-1011B=-11D,Y=-111B=-7D 则则 X补补=1,0101 Y补补=1,1001 1,0 1 0 1X补补 +1,1 0 0 1Y补补 0,1 1 1 0X+Y补补 X+Y补补
22、=0,1110 X+Y=1110B=14D 两两负负数数相相加加结结果果为为14D,显显然然也也是是错错误的。误的。341.溢出的产生(续)字字长长为为n+1位位的的定定点点整整数数(其其中中一一位位为为符符号号位位),采采用用补补码码表表示示,当当运运算算结结果果大大于于2n-1或小于或小于-2n时,就产生溢出。时,就产生溢出。设参加运算的两数为设参加运算的两数为X、Y,做加法运算。做加法运算。若若X、Y异异号号,实实际际上上是是做做两两数数相相减减,所所以不会溢出。以不会溢出。若若X、Y同同号号,运运算算结结果果为为正正且且大大于于所所能能表表示示的的最最大大正正数数或或运运算算结结果果为
23、为负负且且小小于于所所能能表表示示的的最最小小负负数数(绝绝对对值值最最大大的的负负数数)时时,产产生生溢溢出出。将将两两正正数数相相加加产产生生的的溢溢出出称称为为正正溢溢;反反之,之,两负数相加产生的溢出称为负溢两负数相加产生的溢出称为负溢。352.溢出检测方法设:被操作数为:设:被操作数为:X补补=Xs,X1X2Xn 操作数为:操作数为:Y补补=Ys,Y1Y2Yn 其和(差)为:其和(差)为:S补补=Ss,S1S2Sn 采用一个符号位采用一个符号位 采采用用一一个个符符号号位位检检测测溢溢出出时时,当当Xs=Ys=0,Ss=1时时,产产 生生 正正 溢溢;当当Xs=Ys=1,Ss=0时,
24、产生负溢。时,产生负溢。溢出判断条件为溢出判断条件为 溢出溢出=Ss+Xs Ys 362.溢出检测方法(续)采用进位位判断采用进位位判断 两数运算时,产生的进位为两数运算时,产生的进位为 Cs,C1C2Cn,其其中中:Cs为为符符号号位位产产生生的的进进位位,C1为为最最高高数值位产生的进位。数值位产生的进位。两两正正数数相相加加,当当最最高高有有效效位位产产生生进进位位(C1=1)而而符符号号位位不不产产生生进进位位(Cs=0)时时,发发生生正正溢溢;两两负负数数相相加加,当当最最高高有有效效位位不不产产生生进进位位(C1=0)而而符符号号位位产产生生进进位位(Cs=1)时时,发发生负溢。故
25、溢出条件为生负溢。故溢出条件为 溢出溢出=C1+Cs =CsC1 372.溢出检测方法(续)采用变形补码(双符号位补码)采用变形补码(双符号位补码)在在双双符符号号位位(Ss1Ss2)的的情情况况下下,把把左左边边的的符符号号位位Ss1叫叫做做真真符符,两两个个符符号号位位都都作作为为数数的的一一部部分分参参加运算。这种编码又称为变形补码。加运算。这种编码又称为变形补码。双符号位的含义如下:双符号位的含义如下:Ss1Ss2=00 结果为正数,无溢出结果为正数,无溢出 Ss1Ss2=01 结果正溢结果正溢 Ss1Ss2=10 结果负溢结果负溢 Ss1Ss2=11 结果为负数,无溢出结果为负数,无
26、溢出 当当两两位位符符号号位位的的值值不不一一致致时时,表表明明产产生生溢溢出出,溢出条件为溢出条件为 溢出溢出=Ss1Ss2384.2.4 补码定点加减运算的实现 要要实实现现补补码码加加法法,则则需需给给出出XF、YF和和FX三三个个控控制制信信号号,同同时时打打开开门门A、门门B和和门门C,把把寄寄存存器器X和和寄寄存存器器Y的的内内容容送送入入加加法法器器的的两两个个输输入入端端进进行行加加法法运运算算,并并把把结结果果送送回回,最最后后由由打打入入脉脉冲冲CPX打入寄存器打入寄存器X。减减法法与与加加法法的的不不同同之之处处在在于于,加加法法使使用用YF控控制制信信号号,减减法法使使
27、用用 F和和1F控制信号,其余控制信号相同。控制信号,其余控制信号相同。39补码加减运算的逻辑电路图图4-8 补码加减运算器框图补码加减运算器框图 1 40 在在计计算算机机中中,实实现现乘乘除除运运算算的的方方案案通通常常有有3种:种:软软件件实实现现。在在低低档档微微机机中中无无乘乘除除运运算算指指令令,只只能能用用乘乘法法和和除除法法子子程程序序来来实实现现乘乘除除运运算。算。在在原原有有实实现现加加减减运运算算的的运运算算器器基基础础上上增增加加一一些些逻逻辑辑线线路路,使使乘乘除除运运算算变变换换成成加加减减和和移位操作。在机器中设有乘除指令。移位操作。在机器中设有乘除指令。设设置置
28、专专用用的的乘乘、除除法法器器,机机器器中中设设有有相应的乘除指令。相应的乘除指令。不不管管采采用用什什么么方方案案实实现现乘乘除除法法,基基本本原原理理是是相相同同的的。如如果果采采用用第第种种方方案案,则则必必然然会会涉涉及到移位操作。及到移位操作。4.3 带符号数的移位和舍入操作411.原码的移位规则原码的移位规则 不不论论正正数数还还是是负负数数,在在左左移移或或右右移移时时,符符号号位位均均不不变变,空空出出位位一一律律以以“0”补补入。入。负数的原码移位前后结果为:负数的原码移位前后结果为:左移:移位前有:左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:移位后有:1 X2
29、 X3 Xn 0 右移:移位前有:右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:移位后有:1 0 X1 Xn-2 Xn-1 4.3.1 带符号数的移位操作 422.补码的移位规则 正数正数 符符号号位位不不变变,不不论论左左移移或或右右移移,空空出位一律以出位一律以“0”补入。补入。负数负数 符符号号位位不不变变,左左移移后后的的空空出出位位补补“0”,右移后的空出位补,右移后的空出位补“1”。左移:移位前有:左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:移位后有:1 X2 X3 Xn 0 右移:移位前有:右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:移位后
30、有:1 1 X1 Xn-2 Xn-1 433.移位功能的实现 在在计计算算机机中中,通通常常移移位位操操作作由由移移位位寄寄存存器器来来实实现现,但但也也有有一一些些计计算算机机不不设设置置专专门门的的移移位位寄寄存存器器,而而在在加加法法器器的的输输出出端端加加一一个个移移位位器器。移移位位器器是是由由与与门门和和或或门门组组成成的的逻逻辑辑电电路路(实实际际是是一一个个多多路路选选择择器器),可可以以实实现现直直传传(不不移移位位)、左左斜斜一一位位送送(左左移移一一位位)和和右右斜斜一一位位送送(右右移移一一位位)的功能。的功能。44移位器逻辑电路 1 图图4-9 移位器逻辑电路移位器逻
31、辑电路 454.3.2 带符号数的舍入操作 在在算算术术右右移移时时,由由于于受受到到硬硬件件的的限限制制,运运算算结结果果有有可可能能需需要要舍舍去去一一定定的的尾尾数数,这这会会造造成成一一些些误误差差。为为了了缩缩小小误误差差,就就要要进进行行舍舍入入处处理理。假假定定经经过过运运算算后后的的数数共共有有p+q位位,现现仅仅允允许许保保留留前前p位位。常常见见的的舍舍入方法有:入方法有:恒舍(切断)恒舍(切断)无无论论多多余余部部分分q位位为为何何代代码码,一一律律舍去,保留部分的舍去,保留部分的p位不作任何改变。位不作任何改变。464.3.2 带符号数的舍入操作(续)冯冯诺依曼舍入法诺
32、依曼舍入法 这这种种舍舍入入法法又又称称为为恒恒置置1法法,即即不不论论多多余余部部分分q位位为为何何代代码码,都都把把保保留留部部分分p位的最低位置位的最低位置1。下舍上入法下舍上入法 下下舍舍上上入入就就是是0舍舍1入入。用用将将要要舍舍去去的的q位位的的最最高高位位作作为为判判断断标标志志,以以决决定定保保留留部部分分是是否否加加1。如如该该位位为为0,则则舍舍去去整整个个q位位(相相当当于于恒恒舍舍);如如该该位位为为1,则则在保留的在保留的p位的最低位上加位的最低位上加1。474.3.2 带符号数的舍入操作(续)查表舍入法查表舍入法 查查表表舍舍入入法法又又称称ROM舍舍入入法法,因
33、因为为它它用用ROM来来存存放放舍舍入入处处理理表表,每每次次经经查查表表来来读读得得相相应应的的处处理理结结果果。通通常常,ROM表表的的容容量量为为2K个个单单元元,每每个个单单元元字字长长为为K-1位位。舍舍入入处处理理表表的的内内容容设设置置一一般般采采用用的的方方法法是是:当当K位位数数据据的的高高K-1位位为为全全“1”时时,让让那那些些单单元元按按恒恒舍舍法法填填入入K-1位位全全“1”,其其余余单单元元都都按按下下舍舍上上入入法法来来填其内容。填其内容。484.3.2 带符号数的舍入操作(续)494.4 定点乘法运算 在在计计算算机机中中,乘乘法法运运算算大大多多数数由由累累加
34、加与与移移位位来来实实现现,也也有有些些机机器器中中具具有有由由大大规模集成电路制造的阵列乘法模块。规模集成电路制造的阵列乘法模块。504.4.1 原码一位乘法1.原码一位乘法算法原码一位乘法算法 原原码码一一位位乘乘法法是是从从手手算算演演变变而而来来的的,即即用用两两个个操操作作数数的的绝绝对对值值相相乘乘,乘乘积积的的符符号号为为两两操操作作数数符符号号的的异异或或值值(同同号号为为正正,异号为负)。异号为负)。乘积乘积P=|X|Y|符号符号Ps=XsYs 式式中中:Ps为为乘乘积积的的符符号号,Xs和和Ys为为被乘数和乘数的符号。被乘数和乘数的符号。511.原码一位乘法算法(续)原码一
35、位乘法的规则:原码一位乘法的规则:参加运算的操作数取其绝对值;参加运算的操作数取其绝对值;令令乘乘数数的的最最低低位位为为判判断断位位,若若为为“1”,加加被被乘乘数数,若若为为“0”,不不加加被被乘乘数(加数(加0););累累加加后后的的部部分分积积以以及及乘乘数数右右移移一一位;位;重复重复n次次和和;符符号号位位单单独独处处理理,同同号号为为正正,异异号为负。号为负。521.原码一位乘法算法(续)通通常常,乘乘法法运运算算需需要要3个个寄寄存存器器。被被乘乘数数存存放放在在B寄寄存存器器中中;乘乘数数存存放放在在C寄寄存存器器中中;A寄寄存存器器用用来来存存放放部部分分积积与与最最后后乘
36、乘积积的的高高位位部部分分,它它的的初初值值为为0。运运算算结结束束后后寄寄存存器器C中中不不再再保保留留乘乘数数,改改为为存存放乘积的低位部分。放乘积的低位部分。例例8:已已知知:X=0.1101,Y=-0.1011,求求:XY。|X|=00.1101B,|Y|=.1011C,0A53原码一位乘法示例 A C 说明说明0 0.0 0 0 0 1 0 1 1+|X|0 0.1 1 0 1 C4=1,+|X|0 0.1 1 0 1 1 0 1 1 0 0.0 1 1 0 1 1 0 1 部分积右移一位部分积右移一位0 1.0 0 1 1+|X|0 0.1 1 0 1 C4=1,+|X|0 0.1
37、 0 0 1 1 1 1 0 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 C4=0,+00 0.1 0 0 1 0 0.0 1 0 0 1 1 1 1 部分积右移一位部分积右移一位+|X|0 0.1 1 0 1 C4=1,+|X|0 1.0 0 0 1 0 0.1 0 0 0 1 1 1 1 部分积右移一位部分积右移一位PS=XS YS=0 1=1X Y=-0.10001111 54原码一位乘法流程图 552.原码一位乘法运算的实现 教教材材中中图图4-12中中A、B是是n+2位位的的寄寄存存器器,C是是n位位的的寄寄存存器器,A寄寄存存器器和和C寄寄存存器器是是级级联联在在一一
38、起起的的,它它们们都都具具有有右右移移一一位位的的功功能能,在在右右移移控控制制信信号号的的作作用用下下,A寄寄存存器器最最低低一一位位的的值值将将移移入入C寄寄存存器器的的最最高高位位。C寄寄存存器器的的最最低低位位的的值值作作为为字字级级与与门门的的控控制制信信号号,以以控控制制加加被被乘乘数数还还是是不不加加被被乘乘数数(即即加加0)。C寄寄存存器器中中的的乘乘数数在在逐逐次次右右移移过过程程中中将将逐逐步步丢丢失失,取取而而代代之之的的是是乘乘积积的的低低位位部部分分。原原码码一一位位乘乘法法运运算算器器电电路路中中除除去去三三个个寄寄存存器器外外,还还需需要要一一个个n+2位位的的加
39、加法法器器、一一个个计计数数器器、n+2个个与与门门(控控制制是是否否加加被被乘乘数数)和和一一个个异异或或门门(处处理理符符号位)。号位)。564.4.2 补码一位乘法 虽虽然然原原码码乘乘法法比比补补码码乘乘法法容容易易实实现现,但但因因为为补补码码加加减减法法简简单单,在在以以加加减减运运算算为为主主的的通通用用机机中中操操作作数数都都用用补补码码表表示示,所所以以这这类类计算机在做乘法时常使用补码乘法。计算机在做乘法时常使用补码乘法。1.校正法校正法 校校正正法法是是将将X补补和和Y补补按按原原码码规规则则运运算算,所所得得结结果果根根据据情情况况再再加加以以校校正正,从从而而得得到到
40、正正确确的的XY补补。补补码码乘乘法法的的统统一一表表达达式式:XY补补=X补补(0.Y1Y2Yn)+-X补补Ys572.比较法Booth乘法 递推公式:递推公式:Z0补补=0 Z1补补=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补补依依次次为为各各次次求求得得的的累累加加并并右右移移之之后后的的部分积。部分积。582.比较法Booth乘法(续)Booth乘法规则:乘法规则:参加运算的数用补码表
41、示;参加运算的数用补码表示;符号位参加运算;符号位参加运算;乘乘数数最最低低位位后后面面增增加加一一位位附附加加位位Yn+1,其初值为其初值为0;由由于于每每求求一一次次部部分分积积要要右右移移一一位位,所所以以乘乘数数的的最最低低两两位位Yn、Yn+1的的值值决决定定了了每次应执行的操作;每次应执行的操作;移位按补码右移规则进行;移位按补码右移规则进行;共共需需做做n+1次次累累加加,n次次移移位位,第第n+1次不移位。次不移位。59Booth乘法运算操作 判断位判断位Yn Yn+1 操操 作作 0 0 原部分积右移一位原部分积右移一位 0 1 原部分积加原部分积加X补补后右移一位后右移一位
42、 1 0 原部分积加原部分积加-X补补后右移一位后右移一位 1 1 原部分积右移一位原部分积右移一位 602.比较法Booth乘法(续)由由于于符符号号位位要要参参加加运运算算,部部分分积积累累加加时时最最高高有有效效位位产产生生的的进进位位可可能能会会侵侵占占符符号号位位,故故被被乘乘数数和和部部分分积积应应取取双双符符号号位位,而而乘乘数数只只需需要要一一位位符符号号位位。运运算算时时仍仍需需要要有有3个个寄寄存存器器,各各自自的的作作用用与与原原码码时时相相同同,只不过存放的内容均为补码表示而已。只不过存放的内容均为补码表示而已。例例9:已已知知X=-0.1101,Y=0.1011;求求
43、XY。X补补=11.0011B,Y补补=0.1011C,0A -X补补=00.110161Booth乘法示例 A C A C 附加位附加位 说明说明0 0.0 0 0 0 0.1 0 1 1 0 0.0 0 0 0 0.1 0 1 1 0 0+-+-XX补补 0 0.1 1 0 1 0 0.1 1 0 1 C C4 4C C5 5=10=10,+-X+-X补补0 0.1 1 0 10 0.1 1 0 1 0 0.0 1 1 0 1 0 1 0 1 1 0 0.0 1 1 0 1 0 1 0 1 1 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 +0 0 0.0 0 0 0 C C4
44、 4C C5 5=11=11,+0+00 0.0 1 1 00 0.0 1 1 0 0 0.0 0 1 1 0 1 0 1 0 1 0 0.0 0 1 1 0 1 0 1 0 1 部分积右移一位部分积右移一位+XX补补 1 1.0 0 1 1 1 1.0 0 1 1 C C4 4C C5 5=01=01,+X+X补补1 1.0 1 1 01 1.0 1 1 0 1 1.1 0 1 1 0 0 1 0 1 0 1 1.1 0 1 1 0 0 1 0 1 0 部分积右移一位部分积右移一位+-+-XX补补 0 0.1 1 0 1 0 0.1 1 0 1 C C4 4C C5 5=10=10,+-X+
45、-X补补0 0.1 0 0 00 0.1 0 0 0 0 0.0 1 0 0 0 0 0 1 0 1 0 0.0 1 0 0 0 0 0 1 0 1 部分积右移一位部分积右移一位+XX补补 1 1.0 0 1 1 1 1.0 0 1 1 C C4 4C C5 5=01=01,+X+X补补1 1.0 1 1 11 1.0 1 1 1X Y补补=1.01110001X Y=-0.1000111162Booth乘法流程图图图4-13 Booth乘法流程图乘法流程图633.Booth乘法运算的实现 各各器器件件的的作作用用与与原原码码一一位位乘乘法法相相同同,A、B寄寄存存器器长长n+2位位,C寄寄存
46、存器器长长n+1位位,还还需需一一个个n+2位位的的加加法法器器、n+2个个与与或或门门和和一一个个计计数数器器。由由C寄寄存存器器的的最最低低两两位位CnCn+1来来控控制制是是加加/减减被被乘乘数数还还是是加加0,当当CnCn+1=01时时,加加被被乘乘数数,即即加加B寄寄存存器器的的内内容容;CnCn+1=10时时,减减被被乘乘数数,即即加加上上B寄寄存存器器中中内内容容的的反反,并并在在加加法法器器的的最最低低位位加加1;CnCn+1=00或或11时时,不不加加也也不不减减(加加0)。由由于于符符号号位位参参与与运运算算,所所以以不需要专门处理符号位的异或门。不需要专门处理符号位的异或
47、门。644.4.3 补码两位乘法 为为了了提提高高乘乘法法的的执执行行速速度度,可可以以选选用用两两位位乘乘法法的的方方案案。所所谓谓两两位位乘乘法法,就就是是每每次次处处理理乘乘数数中中的的两两位位,从从而而使使乘乘法法的的速速度提高了一倍。度提高了一倍。根根据据Booth乘乘法法方方便便地地推推导导出出补补码码两两位位乘乘法法,即即把把补补码码两两位位乘乘理理解解为为将将Booth乘法的两次合并为一次来做。乘法的两次合并为一次来做。65补码两位乘法操作Yn-1YnYn+10 0 0 +0,右移右移2位位0 0 1 +X补补,右移,右移2位位0 1 0 +X补补,右移,右移2位位0 1 1
48、+2X补补,右移,右移2位位1 0 0 +2-X补补,右移,右移2位位1 0 1 +-X补补,右移,右移2位位1 1 0 +-X补补,右移,右移2位位1 1 1 +0,右移,右移2位位664.4.3 补码两位乘法(续)被被乘乘数数和和部部分分积积取取3符符号号位位,当当乘乘数数的的数数值值位位n为为偶偶数数时时,乘乘数数取取2个个符符号号位位,需需作作n/2+1次次累累加加,n/2次次移移位位(最最后后一一次次不不移移位位);当当n为为奇奇数数时时,乘乘数数只只需需一一个个符符号号位位,共共需需(n+1)/2次次累累加加和和移移位位,但但最后一次仅移一位。最后一次仅移一位。例例10:已已知知:
49、X=0.0110011,Y=-0.0110010,求求:XY。X补补=000.0110011B,Y补补=1.1001110C,0A 2X补补=000.1100110 -X补补=111.1001101 2-X补补=111.001101067补码两位乘法示例 A C 附加位附加位+2-X补补 1 1 1.0 0 1 1 0 1 00 0 0.0 0 0 0 0 0 0 1.1 0 0 1 1 1 0 0 1 1 1.0 0 1 1 0 1 02 1 1 1.1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 +0 0 0 0.0 0 0 0 0 0 01 1 1.1 1 0 0 1 1
50、 02 1 1 1.1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1+X补补 0 0 0.0 1 1 0 0 1 10 0 0.0 1 0 1 1 0 02 0 0 0.0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 +-X补补 1 1 1.1 0 0 1 1 0 11 1 1.1 0 1 1 0 0 01 1 1 1.1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 XY补补1.11011000001010 XY-0.00100111110110 684.5 定点除法运算 除除法法是是乘乘法法的的逆逆运运算算,与与乘乘法法运运算算的的处处理理思思想