1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章 运算方法和运算器,2.1,数据与文字的表示方法,2.2,定点加法、减法运算,2.3,定点乘法运算,2.4,定点除法运算,2.5,定点运算器的组成,2.6,浮点运算方法和浮点运算器,1,2.1,数据与文字的表示方法,2.1.1,数据格式,计算机中常用的数据表示格式有两种,:,1,定点格式,2,浮点格式,一般来说,定点格式容许的数值范围有限,但要求的处理硬件比较简单。而浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。,2,1.,定点数的表示方法,定点表示,:约定机器中所有数据的小数点位置是固定不变
2、的。由于约定在固定的位置,小数,点就不再使用记号“,.”,来表示。通常将数据表示成,纯小数,或,纯整数,。,定点数,0,1,2,n,在定点机中表示如下,(,0,:,符号位,,0,代表正号,,1,代表负号,):,3,纯小数,的表示范围为,(,0,1,2,n,各位均为,0,时最小;各位均为,1,时最大,),0|,|,1,2,n,(2.1),纯整数,的表示范围为,0|,|,2,n,1,(2.2),目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为,整数运算,。,4,电子的质量,(910,28,克,),和太阳的质量,(210,33,克,),相差甚远,在定点计算机中无法直接来表示这个数值范围
3、要使它们送入定点计算机进行某种运算,必须对它们分别取不同的比例因子,使其数值部分绝对值小于,1,,即:,9 10,28,0.9 10,27,2 10,33,0.2 10,34,这里的比例因子,10,27,和,10,34,要分别存放在机器的某个存储单元中,以便以后对计算结果按这个比例增大。显然这要占用一定的存储空间和运算时间。因此得到浮点表示法如下:,2.,浮点数的表示方法,5,浮点表示法,:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动,称为浮点表示法。,任意一个十进制数,可
4、以写成,10,E,.,(2.3),同样在计算机中一个任意进制数,可以写成,e,.,(2.4),:,尾数,,是一个纯小数。,e,:比例因子的指数,称为浮点数的,指数,,是一个整数。,R,:比例因子的,基数,,对于二进计数值的机器是一个常数,一般规定,为,2,,,8,或,16,。,6,一个机器浮点数由阶码和尾数及其符号位组成(,尾数,:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度;,阶码,:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。):,7,32,位浮点数的,IEEE754,标准格式为:,64,位浮点数的,IEEE754,标准格式为:,8,在,IEEE754,标
5、准格式表示的,32,位浮点数中,,:,浮点数的符号位,,1,位,,0,表示正数,,1,表示负数。,:,尾数,,23,位,用小数表示,,小数点放在尾数域的最前面。,:,阶码,,8,位阶符采用隐含方式,,即采用移码方式来表示正负指数。,移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,,将浮点数的指数真值,e,变成阶码,时,应将指数,e,加上一个固定的偏移值,127,(01111111),,即,e,127.,9,IEEE754,标准中,一个,规格化,的,32,位浮点数,的真值可表示为,(,1),s,(1.,)2,127,e,127,一个规格化的,64,
6、位浮点数,的真值为,(,1),s,(1.,)2,1023,e,1023,为提高数据的表示精度,当尾数的值不为,0,时,尾数域的最高有效位应为,1,否则以修改,阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的,规格化表示,。,当浮点数的尾数为,0,,不论其阶码为何值,或者当,阶码,的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为,机器零,。,10,当阶码,E,为全,0,且尾数,M,也为全,0,时,表示的真值,x,为零,结合符号位,S,为,0,或,1,,有正零和负零之分。当阶码,E,为全,1,且尾数,M,为全,0,时,表示的真值,x,为无穷大,结
7、合符号位,S,为,0,或,1,,也有,+,和,-,之分。这样在,32,位浮点数表示中,要除去,E,用全,0,和全,1(255),10,表示零和无穷大的特殊情况,指数的,偏移值,不选,128(,10000000,),,而选,127(,01111111,),。对于规格化浮点数,,E,的范围变为,1,到,254,,真正的指数值,e,则为,-126,到,+127,。因此,32,位浮点数表示的绝对值的范围是,10,-38,10,38,(以,10,的幂表示)。,11,浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用
8、定点、浮点表示,由使用者进行选择,而单片机中多采用定点表示。,例,1,若浮点数,的,754,标准存储格式为,(41360000),16,,求其浮点数的十进制数值。,例,2,将,(20.59375),10,转换成,754,标准的,32,位浮点,数的二进制存储格式。,12,例,1,若浮点数,的,754,标准存储格式为,(41360000),16,,求其浮点数的十进制数值。,解,:,将十六进制数展开后,可得二进制数格式为,指数,e,阶码,127,10000010,01111111,00000011=(3),10,包括隐藏位,1,的尾数,1.,M,1.011 0110 0000 0000 0000 0
9、000,1.011011,于是有,(,1),s,1.,M,2,e,(1.011011)2,3,1011.011,(11.375),10,13,例,2,将,(20.59375),10,转换成,754,标准的,32,位浮点,数的二进制存储格式。,解,:,首先分别将整数和分数部分转换成二进制数:,20.59375,10100.10011,然后移动小数点,使其在第,1,,,2,位之间,10100.10011,1.0100100112,4,e,4,于是得到:,S,0,,,E,4,127,131,,,M,010010011,最后得到,32,位浮点数的二进制存储格式为:,0100 0001 1010 010
10、0 1100 0000 0000 0000,(41A4C000),16,14,3.,十进制数,串,的表示方法,目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式:,(1),字符串形式,:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数,(,串的长度,),。,(2),压缩的十进制数串形式,:一个字节存放两个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。,15,4.,自定义数据表示,在传统的计算机体系结构中,用指令本身来说明操作数据的类型。如定
11、点加法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是,BCD,数。由于操作数据类型不同,要设三种不同的指令,(,操作码,),来加以区分。,自定义数据表示则用数据本身来说明数据类型。表示形式有两种,即,标志符数据表示,和,描述符数据表示,。,16,描述符数据表示,主要用来描述多维结构的数据类型,如向量、矩阵、记录等。描述符标志位部分指明这是一个数据描述符;特征标记部分指明数据的各种特征;长度部分指明数组中元素个数;起始地址部分指明数据块的首地址。,其格式为:,标志符数据表示,要求对每一个数据都附加标志符。其指明后面的数据所具有的类型,如整数、浮点数、,BCD,数、
12、字符串等,其格式如下:,标识符,数据,描述符标志位,特征标记,数据块长度,数据块起始地址,17,2.1.2,数的机器码表示,在计算机中对数据进行运算操作时,为了妥善的处理好符号位问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为,真值,,后者称为,机器数,或,机器码,。常用的机器码表示法:,1.,原码表示法,2.,补码表示法,3.,反码表示法,4.,移码表示法,18,1.,原码表示法,若,定点小数,的原码形式为,0,.,1,2,n,,则原码表示的定义是:,1,0,原,1,1,|,|0,
13、1,式中,原,是机器数,,是真值,若,定点整数,的原码形式为,0,1,2,n,,则原码表示的定义是,2,n,0,原,2,n,2,n,|,|0,2,n,19,对于,0,,原码机器中往往有“,+0”,、“,-0”,之分,故有两种形式:,+0,原,=0.000.0,-0,原,=1.000.0,采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。为了解决这些矛盾,人们找到了补码表示法。,20,2.,补码表示法,我们先以钟表对时为例说明补码的概念。假设现
14、在的标准时间为,4,点正;而有一只表已经,7,点了,为了校准时间,可以采用两种方法:一是将时针退,7-4=3,格;一是将时针向前拨,12-3=9,格。这两种方法都能对准到,4,点,,由此可以看出,减,3,和加,9,是等价的,就是说,9,是,(-3),对,12,的补码,,可以用数学公式表示,:,-3,+9,(,mod12,),mod12,的意思就是,12,模数,这个“模”表示被丢掉的数值。上式在数学上称为同余式。,21,上例中其所以,7-3,和,7+9(mod12),等价,原因就是表指针超过,12,时,将,12,自动丢掉,最后得到,16-12=4,。从这里可以得到一个启示,就是负数用补码表示时,
15、可以把减法转化为加法。这样,在计算机中实现起来就比较方便。,7 3=4,7+9=4,以,12,取模数,(mod12),-3=+9,(,mod12,),采用补码表示法进行减法运算就比原码方便得多了。因为不论数是正还是负,机器总是做加法,减法运算可变为加法运算。关键是我们需要换算出两个操作数的补码表示。,22,若,定点小数,补码形式为,0,.,1,2,n,,则补码表示的定义是:,1,0,补,2,2,|,|,0,1,(mod 2),若,定点整数,补码形式为,0,1,2,n,,则补码表示的定义是:,2,n,0,补,2,n+1,+,2,n+1,|,|,0,2,n,(mod 2,n,1,),根据补码定义,
16、求负数的补码要从,2,减去,|x|,。为了用加法代替减法,结果还得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示法可以解决负数的求补问题。,23,3.,反码表示法,所谓反码,就是二进制的各位数码,0,变为,1,,,1,变为,0,。也就是说,若,Xi=1,,则反码为,xi=0,;若,xi=0,,则反码,xi=1,。数值上面的一横表示反码的意思。在计算机中用触发器寄存数码,若触发器,Q,端输出表示原码,则其,Q,端输出就是反码。由此可知,反码是容易得到的。,24,若,定点小数,反码形式为,0,.,1,2,n,,则反码表示的定义是:,1,0,反,(2,2,-n,),0,1,一般情况下,对
17、正数和负数的值,,0.,1,2,n,,则,反,0.,1,2,n,0.,1,2,n,,则,反,1.,1,2,n,若,定点整数,反码形式为,0,1,2,n,,则反码表示的定义是:,2,n,0,反,(2,n+1,1),0,2,n,25,我们比较反码与补码的公式,对于负数有:,定点小数,反,(2,2,n,),补,2,可得到,补,反,2,n,定点整数,反,(2,n+1,1),补,2,n+1,+,可得到,补,反,1,这就是通过反码求补码的重要公式。这个公式告诉我们,若要一个负数变补码,其方法是符号位置,1,,其余各位,0,变,1,,,1,变,0,,然后在最末位,(2,-n),上加,1,。,26,4.,移码
18、表示法,移码通常用于表示浮点数的阶码。由于阶码是个,n,位的整数,假定定点整数移码形式,为,0,1,2,n,时,对定点整数移码的传统定义是:,移,2,n,2,n,2,n,若阶码数值部分为,5,位,以,表示真值,,则:,移,2,5,2,5,2,5,27,小结:,上面的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算。,28,例,5,设机器字长,16,位,定点表示,尾
19、数,15,位,数符,1,位,问:,(1),定点原码整数表示时,最大正数是多少,?,最小负数是多少,?(2),定点原码小数表示时,最大正数是多少,?,最小负数是多少,?;,解,:,(1),定点原码整数表示,最大正数值,(2,15,1),10,(,32767),10,最小负数值,(2,15,1),10,(,32767),10,(2),定点原码小数表示,最大正数值,(1,2,15,),10,(,0.111.11),2,最小负数值,(1,2,15,),10,(,0.111.11),2,0,111 111 111 111 111,1,111 111 111 111 111,29,例,6,假设由,S,,,
20、E,,,M,三个域组成的一个,32,位二进制数所表示的非零规格化浮点数,,真值表示为,:,(,1),s,(1.,M,)2,E,128,问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?,解,:,(1),最大正数,1,(1,2,-23,)2,127,(2),最小正数,1.02,128,(3),最小负数,1,(1,2,23,)2,127,(4),最大负数,1.02,128,0,11 111 111,111 111 111 111 111 111 111 11,0,00 000 000,000 000 000 000 000 000 000 00,1,11 111 111,111
21、111 111 111 111 111 111 11,1,00 000 000,000 000 000 000 000 000 000 00,30,例,7,若机器使用,8,位表示定点数,将数,x,100/,100,,,y,0.59375/,0.59375,分别转换为各种机器码形式。,解,:,已知数据位数为,8,位,最高位为符号位,数据表示范围可用,7,位,那么,定点整数的范围是:,0|,|,127,(,2,7,1,),定点小数的范围是:,0|,|,0.9921875,(,1,2,7,),(100),10,=(1100100),2,(0.59375),10,=(0.10011),2,+11001
22、00,原,=,0,1100100 -1100100,原,=,1,1100100,+1100100,反,=,0,1100100 -1100100,反,=,1,0011011,+1100100,补,=,0,1100100 -1100100,补,=,1,0011100,+0.10011,原,=,0,1001100 -0.10011,原,=,1,1001100,+0.10011,反,=,0,1001100 -0.10011,反,=,1,0110011,+0.10011,补,=,0,1001100 -0.10011,补,=,1,0110100,31,2.1.3,字符与字符串的表示方法,1.,字符的表示方
23、法,现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些专用符号,以便表示文字语言、逻辑语言等信息。,目前国际上普遍采用的字符系统是七单位的,ASCII,码,(,美国国家信息交换标准字符码,),,它包括,10,个十进制数码,,26,个英文字母和一定数量的专用符号,如,$,%,等,共,128,个元素,因此二进制编码需,7,位,加一位偶校验位,共,8,位一个字节。参见书中表,2.1,的,ASCII,码字符编码表。,32,2.,字符串,字符串,是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由,2,个或,4,
24、个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。,例,将下面字符串从高位字节到低位字节依次存在主存中。,IF,AB,THEN,READ(C),33,2.1.4,汉字的表示方法,1.,汉字的输入编码,当前采用的方法主要有以下三类,:,数字编码,常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的,6763,个两级汉字分为,94,个区,每个区分,94,位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。,数字编码输入的优点
25、是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。,拼音码,拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。,字形编码,字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。,34,2.,汉字内码,汉字内码,是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的,ASCII,码,当用一个字节表示时,最高位为“,0”,。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“,1”,。,注意:,有些系统中字节
26、的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。,35,3.,汉字字模码,字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。字模点阵只能用来构成,汉字库,,用于汉字的显示输出或打印输出。,注意,汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同 用途的编码,不要混为一谈。,图,2.1,汉字的字模点阵及编码,36,2.1.5,校验码,元件故障,/,噪声干扰等各种因素常导致计算机在处理信息过程中出现错误。为了防止错误 可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是在每个字上添加一些校验位,用来确定字中出现错误的位置。,最简单且应用广
27、泛的检错码是采用一位校验位的,奇校验,或,偶校验,。,设,(,0,1,n-1),是一个,n,位字,则,奇校验位,定义为,C,0,1,n-1,同理,偶校验位,定义为,C,0,1,n-1,37,2.2,定点加法、减法运算,2.2.1,补码加法,负数用补码表示后,可以和正数一样来处理。这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。,补码加法的公式是,补,补,补,(mod 2),现分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是,1,1,1,。,38,(1),0,0,则,0,。,相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:,补,补
28、补,(mod 2),(2),0,0,则,0,或,0,时,2,(,)2,进位,2,必丢失,又因,(,),0,,,故,补,补,补,(mod 2),当,0,时,2,(,)2,又因,(,),0,,,故,补,补,2,(,),补,(mod 2),39,(3),0,则,0,或,0,。,这种情况等同于第,2,种情况。,(4),0,0,则,0,。,相加两数都是负数,则其和也一定是负数。,补,2,补,2,补,补,2,2,2,(2,),上式右边分为,”,2”,和,(2,),两部分,.,既然,(,),是负数,而其绝对值又小于,1,那么,(2,),就一定是小于,2,而大于,1,的数,进位,”,2”,必丢失,.,又因,
29、)0,所以,补,补,2,(,),补,(mod 2),至此我们证明了,在模,2,意义下,任意两数的补码之和等于该两数之和的补码,.,这是补码加法的理论基础,其结论也适用于定点整数。,40,例,8,0.1001,0.0101,用补码,求,解,:,补,0.1001,补,0.0101,补,0.1001,补,0.0101,补,0.1110,所以,0.1110,41,例,9,0.1011,0.0101,用补码求,。,解,:,补,0.1011,补,1.1011,补,0.1011,补,1.1011,补,1,0.0110,所以,0.0110,由以上两例看到,补码加法的特点,一是符号位要作为数的一部分一起参加
30、运算,二是要在模,2,的意义下相加,即超过,2,的进位要丢掉。,42,2.2.2,补码减法,负数的减法运算也要设法化为加法来做,其所以使用这种方法而不使用直接减法,是因为它可以和常规的加法运算使用同一加法器电路,从而简化了计算机的设计。,数用补码表示时,减法运算的公式为,补,补,补,补,-,补,只要证明,补,补,上式即得证。,43,现证明如下:,补,补,补,(mod 2),补,补,补,(2.19a),补,(,),补,补,补,补,补,补,(2.19a),将式,(2.19a),与,(2.19b),相加,得,补,补,补,补,补,补,补,补,补,补,补,补,0,故,补,补,(mod 2),44,从,补
31、求,补,的法则是:对,补,包括符号位,“,求反且最末位加,1”,即可得到,补,。,写成运算表达式,则为,补,补,2,n,(2.21),其中符号,表示对,补,作包括符号位在内的求反操作,2,n,表示最末位的,1,45,例,10,已知,1,0.1110,2,0.1101,求:,1,补,1,补,2,补,2,补,。,解,:,1,补,1.0010,1,补,1,补,2,-4,0.1101,0.0001,0.1110,2,补,0.1101,2,补,2,补,2,-4,1.0010,0.0001,1.0011,46,例,11,0.1101,0.0110,求,。,解,:,补,0.1101,补,0.0110,补,
32、1.1010,补,0.1101,补,1.1010,补,1,0.0111,所以,0.0111,47,2.2.3,溢出概念与检测方法,在定点小数机器中,数的表示范围为,|,|1.,在运算过程中如出现大于,1,的现象,称为,“,溢出,”,。在定点机中,正常情况下溢出是不允许的。,两个正数相加,结果大于机器所能表示的最大正数,称为,上溢,。而两个负数相加,结果小于机器所能表示的最小负数,称为,下溢,。,机器定点小数表示,48,例,12,0.1011,0.1001,求,。,解,:,补,0.1011,补,0.1001,补,0.1011,补,0.1001,补,1.0100,两个正数相加的结果成为负数,这显然
33、是错误的。,例,13,0.1101,0.1011,求,。,解,:,补,1.0011,补,1.0101,补,1.0011,补,1.0101,补,0.1000,两个负数相加的结果成为正数,这同样是错误的。,49,为了判断,“,溢出,”,是否发生,可采用两种检测的方法。,第一种方法是采用双符号位法,,这称为,“,变形补码,”,或,“,模,4,补码,”,,从而可使模,2,补码所能表示的数的范围扩大一倍。,第二种溢出检测方法是采用单符号位法,。从上例中看到,当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。,在定点机中当运算结果发生溢出时,机器通过逻辑电路自动
34、检查出溢出,并进行中断处理。,50,2.2.4,基本的二进制加法,/,减法器,首先我们来讨论最简单的一位全加器的结构,设定两个二进制数字,A,i,,,B,i,和一个进位输入,C,i,相加,产生一个和输出,S,i,,以及一个进位输出,C,i,1,。,A,i,B,i,C,i,C,i,1,S,i,下表,列出一位全加器进行加法运算的输入输出真值表。,51,输入,输出,A,i,B,i,C,i,S,i,C,i,1,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,表,2.2,一位全加器真值表,52
35、根据表,2.2,所示的真值表,三个输入端和两个输入端可按如下逻辑方程进行联系:,S,i,A,i,B,i,C,i,C,i,1,A,i,B,i,B,i,C,i,C,i,A,i,按此表达式组成的一位全加器下图示,2.2(a),。,53,54,由上图看到,,n,个,1,位的全加器,(,FA,),可级联成一个,n,位的行波进位加减器。,M,为方式控制输入线,当,M,0,时,作加法,(,A,B,),运算;当,M,1,时,作减法,(,A,B,),运算,在后一种情况下,,A,B,运算转化成,A,补,B,补,运算,求补过程由,B,1,来实现。因此图中最右边的全加器的起始进位输入端被连接到功能方式线,M,上,作
36、减法时,M,1,,相当于在加法器的最低位上加,1,。另外图中左边还表示出单符号位法的溢出检测逻辑;当,C,n,C,n,1,时,运算无溢出;而当,C,n,C,n,1,时,,,运算有溢出,,,经异或门产生溢出信号。,55,对一位全加器,(FA),来说,,,S,i,的时间延迟为,6T(,每级异或门延迟,3T),,,C,i,1,的时间延迟为,5T,,,其中,T,被定义为相应于单级逻辑电路的单位门延迟。,T,通常采用一个,“,与非,”,门或一个,“,或非,”,门的时间延迟来作为度量单位。,现在我们计算一个,n,位的行波进位加法器的时间延迟。假如采用,图,2.2(a),所示的一位全加器并考虑溢出检测,那么
37、n,位行波进位加法器的延迟时间,t,a,为,t,a,n,2,T,9,T,(2,n,9),T,9T,为,最低位上的两极,“,异或,”,门再加上溢出,“,异或,”,门的总时间,,2T,为每级进位链的延迟时间。,56,当不考虑溢出检测时,有,t,a,(,n-1),2,T,9,T,t,a,意味着加法器的输入端输入加数和被加数后,,,在最坏情况下加法器输出端得到稳定的求和输出所需的最长时间。显然这个时间越小越好。注意,加数、被加数、进位与和数都是用电平来表示的,因此,所谓稳定的求和输出,就是指稳定的电平输出。,注意:,第一种情况下,是最低的两个异或门加上溢出的异或门共,3*3T,;第二种情况下,是最低
38、的两个异或门加上最后一个,FA,的输出异或门共,3*3T,。,57,2.2.5,十进制加法器,十进制加法器可由,BCD,码,(,二,十进制码,),来设计,它可以在二进制加法器的基础上加上适当的,校正,逻辑来实现,该校正逻辑可将二进制的,和,改变成所要求的十进制格式。,n,位,BCD,码行波式进位加法器的一般结构如下图,2.3(,a,),所示,,,它由,n,级组成,,,每一级将一对,4,位的,BCD,数字相加,,并通过一位进位线与其相邻级连接。而每一位十进制数字的,BCD,加法器单元的逻辑结构示于图,2.3(,b,),。,58,59,在十进制运算时,当相加二数之和大于,9,时,便产生进位。可是用
39、BCD,码,完成十进制数运算时,当和数大于,9,时,必须对和数进行加,6,修正。这是因为,采用,BCD,码后,在二数相加的和数小于等于,9,时,十进制运算的结果是正确的;而当相加的和数大于,9,时,结果不正确,必须加,6,修正后才能得出正确的结果。,60,2.3,定点乘法运算,2.3.1,原码乘法,1.,人工算法与机器算法的同异性,设,0.1101,0.1011.,下面让我们先用习惯方法求其乘积,其过程如下,:,61,上述的运算过程与十进制乘法相似:从乘数,的最低位开始,若这一位为“,1”,,则将被乘数,写下;若这一位为“,0”,,则写下全,0,。然后在对乘数的次高位进行乘法运算,其规则同上
40、不过这一位乘数的权与最低位乘数的权不一样,因此被乘数,要左移一位。以此类推直到乘数个位乘完为止,最后将它们统统加起来便得到最后乘积,。同理,如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。,数值部分的运算方法与普通的十进制小数乘法类似,不过对于用二进制表达式的数来说,其乘法规则更为简单一些。,62,在定点计算机中,两个原码表示的数相乘的运算规则是,:,乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。,设,n,位被乘数和乘数用,定点小数,表示,被乘数,原,f,.,n,1,1,0,乘数,原,f,.,n,1,1,0,则两数的乘积,原,(,f,f,),(0.,
41、n,1,1,0,)(0.,n,1,1,0,),式中,,f,为被乘数符号,,f,为乘数符号。,63,人们习惯的算法对机器并不完全适用。原因之一,机器通常只有,n,位长,两个,n,位数相乘,乘积可能为,2n,位。原因之二,只有两个操作数相加的加法器难以胜任将,n,各位积一次相加起来的运算。早期计算机中为了简化硬件结构,采用串行的,1,位乘法方案,即多次执行“加法,移位”操作来实现。这种方法并不需要很多器件。然而串行方法毕竟太慢,自从大规模集成电路问世以来,出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。,64,2.,不带符号的阵列乘法器,设有两个不带符号的二进制整数:,A,a,m,1,a,1
42、a,0,B,b,n,1,b,1,b,0,它们的数值分别为,a,和,b,即,m,1,n,1,a,a,i,2,i,b,b,j,2,j,i,0,j,0,在二进制乘法中,被乘数,A,与乘数,B,相乘,产生,m,n,位乘积,P,:,P,p,m,n,1,p,1,p,0,乘积,P,的数值为,65,实现这个乘法过程所需要的操作和人们的习惯方法非常类似:,66,上述过程说明了在,m,位乘,n,位不带符号整数的阵列乘法中“加法,移位”操作的被加数矩,阵。每一个部分乘积项,(,位积,),a,i,b,j,叫做一个被加数。这,mn,个被加数,a,i,b,j,|0,i,m,1,和,0,j,n,1,可以用,mn,个“与”
43、门并行地产生。由此说明设计高速并行乘法器的基本问题,就在于缩短被加数矩阵中每列所包含的,1,的加法时间。,下图是一个,55(,mn,),不带符号的阵列乘法器的逻辑电路图:,67,68,69,这种乘法器要实现,n,位,n,位时,需要,n,(,n,1),个全加器和,n,2,个“与”门。该乘法器的总的乘法时间可以估算如下:令,T,a,为“与门”的传输延迟时间,,T,f,为全加器,(FA),的进位传输延迟时间,假定用,2,级“与非”逻辑来实现,FA,的进位链功能,那么我们就有:,T,a,T,f,2,T,从上图可知,最坏情况下延迟途径,即是沿着矩阵最右边的对角线和最下面的一行。因而得,n,位,n,位不带
44、符号的阵列乘法器总的乘法时间为:,t,m,T,a,(,n,1),6,T,(,n,1),T,f,2,T,(,n,1),6,T,(,n,1),2,T,(8,n,6),T,70,例,16,已知两个不带符号的二进制整数,A,11011,,,B,10101,,求每一部分乘积项,a,i,b,j,的值与,p,9,p,8,p,0,的值。,解,:,P,p,9,p,8,p,7,p,6,p,5,p,4,p,3,p,2,p,1,p,0,1000110111(567,10,),a,4,b,0,1,a,3,b,0,1,a,2,b,0,0,a,1,b,0,1,a,0,b,0,1,a,4,b,1,0,a,3,b,1,0,a,
45、2,b,1,0,a,1,b,1,0,a,0,b,1,0,a,4,b,2,1,a,3,b,2,1,a,2,b,2,0,a,1,b,2,1,a,0,b,2,0,a,4,b,3,0,a,3,b,3,0,a,2,b,3,0,a,1,b,3,0,a,0,b,3,0,a,4,b,4,1,a,3,b,4,1,a,2,b,4,0,a,1,b,4,1,a,0,b,4,1,71,3.,带符号的阵列乘法器,(1),对,2,求补器电路,我们先来看看算术运算部件设计中经常用到的求补电路。下图示出一个具有使能控制的二进制对,2,求补器电路,其逻辑表达式如下:,C,1,0,C,i,a,i,C,i,1,a,i,*,a,i,E
46、C,i,1,0,i,n,72,73,在对,2,求补时,要采用按位扫描技术来执行所需要的求补操作。令,A,a,n,a,1,a,0,是给定的,(,n,1),为带符号的数,要求确定它的补码形式。进行求补的方法就是从数的最右端,a,0,开始,由右向左,直到找出第一个“,1”,,例如,a,i,1,,,0,i,n,。这样,,a,i,以左的每一个输入位都求反,即,1,变,0,,,0,变,1,。最右端的起始链式输入,C,1,必须永远置成“,0”,。当控制信号线,E,为“,1”,时,启动对,2,求补的操作。当控制信号线,E,为“,0”,时,输出将和输入相等。显然,我们可以利用符号位来作为控制信号。,74,例如
47、在一个,4,位的对,2,求补器中,如果输入数为,1010,,那么输出数应是,0110,,其中从右算起的第,2,位,就是所遇到的第一个“,1”,的位置。,用这种对,2,求补器来转换一个,(,n,1),位带符号的数,所需的总时间延迟为,t,TC,n,2,T,5,T,(2,n,5),T,其中每个扫描级需,2,T,延迟,而,5,T,则是由于“与”门和“异或”门引起的。,75,(2),带符号的阵列乘法器,下图是,(,n,1)(,n,1),位带求补器的阵列乘法器逻辑方框图。,通常,把包括这些求补级的乘法器又称为,符号求补的阵列乘法器,。在这种逻辑结构中,共使用三个求补器。其中两个算前求补器的作用是:将两
48、个操作数,A,和,B,在被不带符号的乘法阵列,(,核心部件,),相乘以前,先变成正整数。而算后求补器的作用则是:当两个输入操作数的符号不一致时,把运算结果变成带符号的数。,76,77,上面所示的带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法。不过在原码乘法中,算前求补和算后求补都不需要,因为输入数据都是立即可用的。而间接的补码阵列乘法却需要增加三个硬件求补器。为了完成所必需的求与乘法操作,时间大约比原码阵列乘法增加,1,倍。,实际上我们可以看到带符号的阵列乘法器其内部仍是一个基本的源码阵列乘法器,只是对输入的补码数据在乘前进行了值还原,同时在乘后再次将乘积数转换为补码形式输出。,
49、78,例,17,设,15,,,13,,用带求补器的原码阵列乘法器求出乘积,?,解,:,设最高位为符号位,则输入数据为,补,0,1111 ,补,1,0011,符号位单独考虑,经过算前求补级后,|,|,1111,|,|,1101,79,算后经求补级输出并加上乘积符号位,1,乘积的补码值为,1,00111101,。,则原码乘积值为,1,11000011,。,换算成二进制数真值是,(,11000011),2,=(-195),10,十进制数验证:,15(,13),195,相等。,80,2.3.2,补码乘法,1.,补码与真值的转换公式,补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级
50、这种直接的方法排除了较慢的对,2,求补操作,因而大大加速了乘法过程。,首先说明与直接的补码乘法相联系数学特征。对于计算补码数的数值来说,一种较好的表示方法是使补码的位置数由一个带负权的符号和带正权的系数。今考虑一个定点补码整数,N,补,a,n,1,a,n,2,a,1,a,0,这里,a,n,1,是符号位。根据,N,补,的符号,补码数,N,补,和真值,N,的关系可以表示成:,81,n,2,a,i,2,i,当,a,n,1,0 (,N,补,为正,),N,i,0,n,2,1,(1,a,i,)2,i,当,a,n,1,1 (,N,补,为负,),i,0,如果我们把负权因数,2,n,1,强加到符号位,a,n,






