浮点数计算方法_第1页
浮点数计算方法_第2页
浮点数计算方法_第3页
浮点数计算方法_第4页
浮点数计算方法_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 运算方法和运算器2.1 数据与文字的表示方法2.2 定点加法、减法运算2.3 定点乘法运算2.4 定点除法运算2.5 定点运算器的组成2.6 浮点运算方法和浮点运算器2.1 数据与文字的表示方法 2.1.1 2.1.1 数据格式数据格式计算机中常用的数据表示格式有两种: 1 1 定点格式定点格式 2 2 浮点格式浮点格式 一般来说,定点格式容许的数值范围有限,但要求的处理硬件比较简单。而浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。1. 定点数的表示方法定点数的表示方法定点表示定点表示:约定机器中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”

2、来表示。通常将数据表示成纯小数纯小数或纯整数纯整数。 定点数012n 在定点机中表示如下(0:符号位,0代表正号,1代表负号):纯小数纯小数的表示范围为(012n 各位均为0时最小;各位均为1时最大) 0|12n (2.1) 纯整数纯整数的表示范围为0|2n1 (2.2)目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算整数运算。电子的质量(91028克)和太阳的质量(21033克)相差甚远,在定点计算机中无法直接来表示这个数值范围.要使它们送入定点计算机进行某种运算,必须对它们分别取不同的比例因子,使其数值部分绝对值小于1,即: 9 10280.9 1027 2 1033

3、0.2 1034 这里的比例因子1027 和 1034要分别存放在机器的某个存储单元中,以便以后对计算结果按这个比例增大。显然这要占用一定的存储空间和运算时间。因此得到浮点表示法如下:2. 浮点数的表示方法浮点数的表示方法浮点表示法浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动,称为浮点表示法。 任意一个十进制数 可以写成 10E. (2.3)同样在计算机中一个任意进制数 可以写成 e. (2.4) :尾数尾数,是一个纯小数。 e :比例因子的指数,称为浮点数的指数指数

4、,是一个整数。 R :比例因子的基数基数,对于二进计数值的机器是一个常数,一般规定 为2,8或16。 一个机器浮点数由阶码和尾数及其符号位组成(尾数尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度;阶码阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。): 32位浮点数的IEEE754标准格式为:64位浮点数的IEEE754标准格式为:在IEEE754标准格式表示的32位浮点数中, :浮点数的符号位,1 位, 0表示正数,1表示负数。 :尾数,23位,用小数表示, 小数点放在尾数域的最前面。 :阶码,8 位阶符采用隐含方式, 即采用移码方式来表示正负指数。

5、移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码 时,应将指数 e 加上一个固定的偏移值127(01111111),即 e127. IEEE754 标准中,一个规格化规格化的32位浮点数的真值可表示为 (1)s(1.)2127 e127 一个规格化的64位浮点数的真值为 (1)s(1.)21023 e1023 为提高数据的表示精度,当尾数的值不为 0 时,尾数域的最高有效位应为1,否则以修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示规格化表示。 当浮点数的尾数为 0,不论其阶码为何值,

6、或者当阶码阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零机器零。 当阶码E 为全0且尾数M 也为全0时,表示的真值x 为零,结合符号位S 为0或1,有正零和负零之分。当阶码E 为全1且尾数M 为全0时,表示的真值x 为无穷大,结合符号位S 为0或1,也有+和-之分。这样在32位浮点数表示中,要除去E 用全0和全1(255)10表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而选127(01111111)。对于规格化浮点数,E 的范围变为1到254,真正的指数值e 则为-126到+127。因此32位浮点数表示的绝对值的范围是1

7、0-381038(以10的幂表示)。 浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择,而单片机中多采用定点表示。 例例1 若浮点数的754标准存储格式为 (41360000)16,求其浮点数的十进制数值。例例2 将(20.59375)10转换成754标准的32位浮点 数的二进制存储格式。 例例1 若浮点数的754标准存储格式为 (41360000)16,求其浮点数的十进制数值。解解: 将十六进制数展开后,可得二进制数格式为 指数e阶码127100000100111111

8、100000011=(3)10包括隐藏位1的尾数 1.M1.011 0110 0000 0000 0000 00001.011011 于是有 (1)s1.M2e (1.011011)231011.011(11.375)10 例例2 将(20.59375)10转换成754标准的32位浮点 数的二进制存储格式。 解解: 首先分别将整数和分数部分转换成二进制数: 20.5937510100.10011 然后移动小数点,使其在第1,2位之间 10100.100111.01001001124e4于是得到: S0, E4127131, M010010011最后得到32位浮点数的二进制存储格式为: 0100

9、 0001 1010 0100 1100 0000 0000 0000(41A4C000)16 3. 十进制数十进制数串串的表示方法的表示方法 目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式: (1) 字符串形式字符串形式:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。 (2) 压缩的十进制数串形式压缩的十进制数串形式:一个字节存放两个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。4. 自定义数据表示自定义数据表示 在传

10、统的计算机体系结构中,用指令本身来说明操作数据的类型。如定点加法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是BCD数。由于操作数据类型不同,要设三种不同的指令(操作码)来加以区分。 自定义数据表示则用数据本身来说明数据类型。表示形式有两种,即标志符数据表示标志符数据表示和描述符数据表示描述符数据表示。描述符数据表示主要用来描述多维结构的数据类型,如向量、矩阵、记录等。描述符标志位部分指明这是一个数据描述符;特征标记部分指明数据的各种特征;长度部分指明数组中元素个数;起始地址部分指明数据块的首地址。其格式为:标志符数据表示要求对每一个数据都附加标志符。其指明后面

11、的数据所具有的类型,如整数、浮点数、BCD数、字符串等,其格式如下: 标识符 数据描述符标志位 特征标记 数据块长度 数据块起始地址2.1.2 数的机器码表示数的机器码表示 在计算机中对数据进行运算操作时,为了妥善的处理好符号位问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器数或机器码。 常用的机器码表示法: 1. 原码表示法 2. 补码表示法 3. 反码表示法 4. 移码表示法1. 原码表示法原码表示法 若定点小数的原码形式为0 .12n ,则原码表示的定义是:

12、10 原 11| 01 式中原是机器数,是真值 若定点整数的原码形式为0 12n ,则原码表示的定义是 2n0 原 2n2n| 02n 对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式: +0原 = 0.000.0 -0原 = 1.000.0 采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。为了解决这些矛盾,人们找到了补码表示法。 2. 补码表示法补码表示法 我们先以钟表对时为例说明补码的概念。假设现在的标准时间为4点正; 而有

13、一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退 7-4=3 格;一是将时针向前拨12-3=9格。这两种方法都能对准到4点,由此可以看出,减3和加9是等价的,就是说9是(-3)对12的补码,可以用数学公式表示: -3+9 (mod12)mod12的意思就是12模数,这个“模”表示被丢掉的数值。上式在数学上称为同余式。上例中其所以7-3和7+9(mod12)等价,原因就是表指针超过12时,将12自动丢掉,最后得到16-12=4。从这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便。 7 3 = 4 7 + 9 = 4 以12取模数(

14、mod12) -3 = +9 (mod12) 采用补码表示法进行减法运算就比原码方便得多了。因为不论数是正还是负,机器总是做加法,减法运算可变为加法运算。关键是我们需要换算出两个操作数的补码表示。 若定点小数补码形式为0 .12n ,则补码表示的定义是: 10 补 22| 01 (mod 2) 若定点整数补码形式为0 12n ,则补码表示的定义是: 2n0 补 2n+1+2n+1| 02n (mod 2n1) 根据补码定义,求负数的补码要从2减去|x|。为了用加法代替减法,结果还得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示法可以解决负数的求补问题。3. 反码表示法反码表示法 所

15、谓反码,就是二进制的各位数码0变为1,1变为0。也就是说,若Xi=1,则反码为xi=0;若xi=0,则反码xi=1。数值上面的一横表示反码的意思。在计算机中用触发器寄存数码,若触发器Q端输出表示原码,则其Q端输出就是反码。由此可知,反码是容易得到的。 若定点小数反码形式为0 .12n ,则反码表示的定义是: 10 反 (22-n) 01一般情况下,对正数和负数的值,0.12n,则反0.12n0.12n,则反1.12n 若定点整数反码形式为0 12n ,则反码表示的定义是: 2n0 反 (2n+11) 02n我们比较反码与补码的公式,对于负数有: 定点小数 反(22n) 补2 可得到 补反2n

16、定点整数 反 (2n+11) 补 2n+1+ 可得到 补反1 这就是通过反码求补码的重要公式。这个公式告诉我们,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。4. 移码表示法移码表示法移码通常用于表示浮点数的阶码。由于阶码是个n位的整数,假定定点整数移码形式为 012n时,对定点整数移码的传统定义是: 移2n 2n2n 若阶码数值部分为5位,以表示真值,则: 移25 25 25 小结:小结:上面的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示

17、,补码存储,补码运算。也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算。 例例5设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少?; 解解: (1)定点原码整数表示 最大正数值(2151)10(32767)10 最小负数值(2151)10(32767)10 (2)定点原码小数表示 最大正数值(1215)10(0.111.11)2 最小负数值(1215)10(0.111.11)2 0 111 111 111 111

18、 1111 111 111 111 111 111例例6假设由S,E,M三个域组成的一个32位二进制数所表示的非零规格化浮点数,真值表示为: (1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少? 解解: (1)最大正数 1(12-23)2127 (2)最小正数 1.02128 (3)最小负数 1(1223)2127 (4)最大负数 1.02128 0 11 111 111111 111 111 111 111 111 111 110 00 000 000000 000 000 000 000 000 000 001 11 111 111111 111

19、 111 111 111 111 111 111 00 000 000000 000 000 000 000 000 000 00例例7 若机器使用8位表示定点数,将数 x100/100,y0.59375/0.59375分别转换为各种机器码形式。 解解:已知数据位数为8位,最高位为符号位,数据表示范围可用7位,那么定点整数的范围是: 0|127 ( 271)定点小数的范围是: 0|0.9921875 (127 ) (100)10 = (1100100)2 (0.59375)10 = (0.10011)2+1100100原 = 01100100 -1100100原 = 11100100 +110

20、0100反 = 01100100 -1100100反 = 10011011+1100100补 = 01100100 -1100100补 = 10011100+ 0.10011原 = 01001100 - 0.10011原 = 11001100+ 0.10011反 = 01001100 - 0.10011反 = 10110011+ 0.10011补 = 01001100 - 0.10011补 = 101101002.1.3 字符与字符串的表示方法字符与字符串的表示方法1. 字符的表示方法字符的表示方法现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要引入文字、字母以

21、及某些专用符号,以便表示文字语言、逻辑语言等信息。目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$, %, , 等,共128个元素,因此二进制编码需7位,加一位偶校验位,共8位一个字节。参见书中表2.1的ASCII码字符编码表。 2. 字符串字符串 字符串字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。例例

22、 将下面字符串从高位字节到低位字节依次存在主存中。 IFABTHENREAD(C)2.1.4 汉字的表示方法汉字的表示方法1. 汉字的输入编码汉字的输入编码 当前采用的方法主要有以下三类: 数字编码数字编码 常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。 拼音码拼音码 拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字

23、同音字太多,输入重码率很高,同音字选择影响了输入速度。 字形编码字形编码 字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。2.汉字内码汉字内码汉字内码汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。注意:注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。 3. 汉字字模码汉字字模码字模码字模码是用点阵表示的汉字字形代码,它是

24、汉字的输出形式。字模点阵只能用来构成汉字库汉字库,用于汉字的显示输出或打印输出。 注意,汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同 用途的编码,不要混为一谈。 图2.1汉字的字模点阵及编码 2.1.5 校验码校验码 元件故障/噪声干扰等各种因素常导致计算机在处理信息过程中出现错误。为了防止错误 可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是在每个字上添加一些校验位,用来确定字中出现错误的位置。最简单且应用广泛的检错码是采用一位校验位的奇校验奇校验或偶校验偶校验。 设(01n-1)是一个n位字, 则奇校验位奇校验位定义为 C01 n-1

25、同理偶校验位偶校验位定义为 C01 n-12.2 定点加法、减法运算2.2.1 补码加法补码加法 负数用补码表示后,可以和正数一样来处理。这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。补码加法的公式是 补补补 (mod 2) 现分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是 1, 1, 1。(1)0,0,则0。 相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得: 补补补 (mod 2) (2)0,0,则0或0时,2 () 2,进位2必丢失,又因()0,故补补补 (mod 2)当0时,2 () 2,又因()0,故补补2()补 (

26、mod 2)(3)0,则0或 0。这种情况等同于第2种情况。 (4)0,0,则0。 相加两数都是负数,则其和也一定是负数。补2,补2补补222(2)上式右边分为”2”和(2)两部分.既然()是负数,而其绝对值又小于1,那么(2)就一定是小于2而大于1的数,进位”2”必丢失.又因()0, 所以补补2()补(mod 2)至此我们证明了,在模2意义下,任意两数的补码之和等于该两数之和的补码.这是补码加法的理论基础,其结论也适用于定点整数。例例8 0.1001,0.0101, 用补码求解解: 补0.1001, 补0.0101 补0.1001 补0.0101 补0.1110 所以0.1110 例例990

27、.1011,0.0101, 用补码求。解解: 补0.1011,补1.1011 补0.1011 补1.1011 补 10.0110 所以0.0110 由以上两例看到,补码加法的特点,一是符号位要作为数的一部分一起参加运算,二是要在模2的意义下相加,即超过2的进位要丢掉。 2.2.2 补码减法补码减法 负数的减法运算也要设法化为加法来做,其所以使用这种方法而不使用直接减法,是因为它可以和常规的加法运算使用同一加法器电路,从而简化了计算机的设计。数用补码表示时,减法运算的公式为 补补补补-补 只要证明补补,上式即得证。现证明如下:补补补 (mod 2)补补补 (2.19a)补()补补补补 补补 (2

28、.19a)将式(2.19a)与(2.19b)相加,得补补补补补补 补补补 补补补0故 补补 (mod 2) 从补求补的法则是:对补包括符号位“求反且最末位加1”,即可得到补。写成运算表达式,则为补补2n(2.21) 其中符号表示对补作包括符号位在内的求反操作,2n表示最末位的1例例10 已知10.1110,20.1101, 求:1补,1补,2补,2补。解解:1补 1.0010 1补 1补2-4 0.11010.00010.11102补 0.11012补 2补2-4 1.00100.00011.0011例例11 0.1101,0.0110,求。解解:补0.1101补0.0110 补1.1010

29、补 0.1101 补 1.1010 补 10.0111 所以0.01112.2.3 溢出概念与检测方法溢出概念与检测方法在定点小数机器中,数的表示范围为|1. 在运算过程中如出现大于1的现象,称为“溢出”。在定点机中,正常情况下溢出是不允许的。 两个正数相加,结果大于机器所能表示的最大正数,称为上溢上溢。而两个负数相加,结果小于机器所能表示的最小负数,称为下溢下溢。机器定点小数表示例例12 0.1011,0.1001,求。解解:补0.1011 补0.1001 补0.1011 补0.1001 补1.0100 两个正数相加的结果成为负数,这显然是错误的。例例13 0.1101,0.1011,求。解

30、解:补1.0011 补1.0101 补 1.0011 补1.0101 补0.1000两个负数相加的结果成为正数,这同样是错误的。 为了判断“溢出”是否发生,可采用两种检测的方法。第一种方法是采用双符号位法,这称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。 第二种溢出检测方法是采用单符号位法。从上例中看到,当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。 在定点机中当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出,并进行中断处理。2.2.4 基本的二进制加法基本的二进制加法/减法器减法器 首先我们来讨论最简单的一位全

31、加器的结构,设定两个二进制数字Ai,Bi和一个进位输入Ci 相加,产生一个和输出Si ,以及一个进位输出Ci1。 Ai Bi Ci Ci1 Si 下表列出一位全加器进行加法运算的输入输出真值表。 输入 输出Ai Bi CiSi Ci10000000110010100110110010101011100111111表表2.2 一位全加器真值表一位全加器真值表 根据表2.2所示的真值表,三个输入端和两个输入端可按如下逻辑方程进行联系: Si Ai Bi Ci Ci1 AiBiBiCiCiAi 按此表达式组成的一位全加器下图示2.2(a)。 由上图看到,n个1位的全加器(FA)可级联成一个n位的行波

32、进位加减器。M为方式控制输入线,当M0时,作加法(AB)运算;当M1时,作减法(AB)运算,在后一种情况下,AB运算转化成A补B补运算,求补过程由B1来实现。因此图中最右边的全加器的起始进位输入端被连接到功能方式线M上,作减法时M1,相当于在加法器的最低位上加1。另外图中左边还表示出单符号位法的溢出检测逻辑;当CnCn1时,运算无溢出;而当CnCn1时,运算有溢出,经异或门产生溢出信号。 对一位全加器(FA)来说,Si的时间延迟为6T(每级异或门延迟3T),Ci1的时间延迟为5T,其中T被定义为相应于单级逻辑电路的单位门延迟。T通常采用一个“与非”门或一个“或非”门的时间延迟来作为度量单位。

33、现在我们计算一个n位的行波进位加法器的时间延迟。假如采用图2.2(a)所示的一位全加器并考虑溢出检测,那么n位行波进位加法器的延迟时间ta为 tan2T9T(2n9)T9T为最低位上的两极“异或”门再加上溢出“异或”门的总时间,2T为每级进位链的延迟时间。 当不考虑溢出检测时,有 ta(n-1)2T9Tta意味着加法器的输入端输入加数和被加数后,在最坏情况下加法器输出端得到稳定的求和输出所需的最长时间。显然这个时间越小越好。注意,加数、被加数、进位与和数都是用电平来表示的,因此,所谓稳定的求和输出,就是指稳定的电平输出。 注意:第一种情况下,是最低的两个异或门加上溢出的异或门共3*3T;第二种

34、情况下,是最低的两个异或门加上最后一个FA的输出异或门共3*3T。2.2.5 十进制加法器十进制加法器 十进制加法器可由BCD码(二十进制码)来设计,它可以在二进制加法器的基础上加上适当的 校正校正 逻辑来实现,该校正逻辑可将二进制的 和和 改变成所要求的十进制格式。 n位BCD码行波式进位加法器的一般结构如下图2.3(a)所示,它由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。而每一位十进制数字的BCD加法器单元的逻辑结构示于图2.3(b)。 在十进制运算时,当相加二数之和大于9时,便产生进位。可是用BCD码完成十进制数运算时,当和数大于9时,必须对和数进行加6

35、修正。这是因为,采用BCD码后,在二数相加的和数小于等于9时,十进制运算的结果是正确的;而当相加的和数大于9时,结果不正确,必须加6修正后才能得出正确的结果。2.3 定点乘法运算 2.3.1 原码乘法原码乘法 1. 人工算法与机器算法的同异性人工算法与机器算法的同异性 设0.1101, 0.1011. 下面让我们先用习惯方法求其乘积,其过程如下: 上述的运算过程与十进制乘法相似:从乘数的最低位开始,若这一位为“1”,则将被乘数写下;若这一位为“0”,则写下全0。然后在对乘数的次高位进行乘法运算,其规则同上,不过这一位乘数的权与最低位乘数的权不一样,因此被乘数要左移一位。以此类推直到乘数个位乘完

36、为止,最后将它们统统加起来便得到最后乘积。同理,如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。 数值部分的运算方法与普通的十进制小数乘法类似,不过对于用二进制表达式的数来说,其乘法规则更为简单一些。 在定点计算机中,两个原码表示的数相乘的运算规则是: 乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。 设n位被乘数和乘数用定点小数表示 被乘数 原f .n110 乘数 原f .n110则两数的乘积 原(ff) (0.n110)(0.n110) 式中,f为被乘数符号,f为乘数符号。 人们习惯的算法对机器并不完全适用。原因之一,机器通常只有n位长,两个n位数相

37、乘,乘积可能为2n位。原因之二,只有两个操作数相加的加法器难以胜任将n各位积一次相加起来的运算。早期计算机中为了简化硬件结构,采用串行的1位乘法方案,即多次执行“加法移位”操作来实现。这种方法并不需要很多器件。然而串行方法毕竟太慢,自从大规模集成电路问世以来,出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。2. 不带符号的阵列乘法器不带符号的阵列乘法器设有两个不带符号的二进制整数: Aam1a1a0 Bbn1b1b0 它们的数值分别为a和b,即 m1n1 a ai2i b bj2j i0 j0 在二进制乘法中,被乘数A与乘数B相乘,产生mn位乘积P: Ppmn1p1p0乘积P 的数值为

38、实现这个乘法过程所需要的操作和人们的习惯方法非常类似: 上述过程说明了在m位乘n位不带符号整数的阵列乘法中“加法移位”操作的被加数矩阵。每一个部分乘积项(位积)aibj叫做一个被加数。这 mn 个被加数 aibj| 0im1 和 0jn1 可以用mn个“与”门并行地产生。由此说明设计高速并行乘法器的基本问题,就在于缩短被加数矩阵中每列所包含的1的加法时间。 下图是一个55 ( mn)不带符号的阵列乘法器的逻辑电路图: 这种乘法器要实现n位n位时,需要n(n1)个全加器和n2个“与”门。该乘法器的总的乘法时间可以估算如下:令Ta为“与门”的传输延迟时间,Tf为全加器(FA)的进位传输延迟时间,假

39、定用2级“与非”逻辑来实现FA的进位链功能,那么我们就有: Ta Tf 2T从上图可知,最坏情况下延迟途径,即是沿着矩阵最右边的对角线和最下面的一行。因而得n位n位不带符号的阵列乘法器总的乘法时间为: tmTa(n1)6T( n1)Tf 2T(n1)6T(n1)2T (8n6)T例例16 已知两个不带符号的二进制整数A 11011,B 10101,求每一部分乘积项aibj的值与p9p8p0的值。解解:Pp9p8p7p6p5p4p3p2p1p01000110111 (56710)a4b01 a3b01 a2b00 a1b01 a0b01a4b10 a3b10 a2b10 a1b10 a0b10a

40、4b21 a3b21 a2b20 a1b21 a0b20a4b30 a3b30 a2b30 a1b30 a0b30a4b41 a3b41 a2b40 a1b41 a0b413. 带符号的阵列乘法器带符号的阵列乘法器(1) 对2求补器电路我们先来看看算术运算部件设计中经常用到的求补电路。下图示出一个具有使能控制的二进制对2求补器电路,其逻辑表达式如下: C10, CiaiCi1 ai*aiECi1,0in 在对2求补时,要采用按位扫描技术来执行所需要的求补操作。令Aana1a0是给定的(n1)为带符号的数,要求确定它的补码形式。进行求补的方法就是从数的最右端a0开始,由右向左,直到找出第一个“1

41、”,例如 ai1,0in。这样,ai以左的每一个输入位都求反,即1变0,0变1。最右端的起始链式输入C1必须永远置成“0”。当控制信号线E为“1”时,启动对2求补的操作。当控制信号线E为“0”时,输出将和输入相等。显然,我们可以利用符号位来作为控制信号。例如,在一个4位的对2求补器中,如果输入数为1010,那么输出数应是0110,其中从右算起的第2位,就是所遇到的第一个“1”的位置。 用这种对2求补器来转换一个(n1)位带符号的数,所需的总时间延迟为 tTCn2T5T(2n5)T 其中每个扫描级需2T延迟,而5T则是由于“与”门和“异或”门引起的。(2) 带符号的阵列乘法器下图是(n1)(n1

42、)位带求补器的阵列乘法器逻辑方框图。通常,把包括这些求补级的乘法器又称为符号求补的阵列乘法器。在这种逻辑结构中,共使用三个求补器。其中两个算前求补器的作用是:将两个操作数A和B在被不带符号的乘法阵列(核心部件)相乘以前,先变成正整数。而算后求补器的作用则是:当两个输入操作数的符号不一致时,把运算结果变成带符号的数。 上面所示的带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法。不过在原码乘法中,算前求补和算后求补都不需要,因为输入数据都是立即可用的。而间接的补码阵列乘法却需要增加三个硬件求补器。为了完成所必需的求与乘法操作,时间大约比原码阵列乘法增加1倍。 实际上我们可以看到带符号的

43、阵列乘法器其内部仍是一个基本的源码阵列乘法器,只是对输入的补码数据在乘前进行了值还原,同时在乘后再次将乘积数转换为补码形式输出。 例例17 设15,13,用带求补器的原码阵列乘法器求出乘积?解解: 设最高位为符号位,则输入数据为 补 01111 补 10011 符号位单独考虑,经过算前求补级后 |1111, |1101算后经求补级输出并加上乘积符号位1, 乘积的补码值为 100111101。 则原码乘积值为 111000011。 换算成二进制数真值是 ( 11000011)2=(-195)10 十进制数验证: 15 (13) 195相等。2.3.2 补码乘法补码乘法1. 补码与真值的转换公式补

44、码与真值的转换公式 补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。这种直接的方法排除了较慢的对2求补操作,因而大大加速了乘法过程。首先说明与直接的补码乘法相联系数学特征。对于计算补码数的数值来说,一种较好的表示方法是使补码的位置数由一个带负权的符号和带正权的系数。今考虑一个定点补码整数N补an1an2a1a0,这里an1是符号位。根据N补的符号,补码数N补和真值N的关系可以表示成: n2 ai2i 当an1 0 (N补为正) N i0 n2 1(1ai)2i 当an1 1 (N补为负) i0 如果我们把负权因数2n1强加到符号位an1上,那么就可以把上述方程组中的两个

45、位置表达式合并成下面的统一形式: n2 N an12n1ai2i i=0 n2 N (1an1)2n1(1ai)2i +1 i0 2. 一般化的全加器形式一般化的全加器形式常规的一位全加器可假定它的3个输入和2个输出都是正权。这种加法器通过把正权或负权加到输入/输出端,可以归纳出四类加法单元。如下表,0类全加器没有负权输入;1类全加器有1个负权输入和2个正权输入;依次类推。对0类、3类全加器而言有:XYZZYXZYXZYXZYXS对1类、2类全加器,则有ZXZYXYCXYZZYXZYXZYXZYXSXZYZXYC表2.3 四类一般化全加器的名称和逻辑符号 注意,0类和3类全加器是用同一对逻辑方

46、程来表征的,它和普通的一位全加器(0类)是一致的。这是因为3类全加器可以简单地把0类全加器的所有输入输出值全部反向来得到,反之亦然。1类和2类全加器之间也能建立类似的关系。由于逻辑表达式具有两级与-或形式,可以用“与或非”门来实现,延迟时间为2T。3. 直接补码阵列乘法器直接补码阵列乘法器 利用混合型的全加器就可以构成直接补码数阵列乘法器。设被乘数A和乘数B是两个5位的二进制补码数,即 A(a4)a3a2a1a0 B(b4)a3a2a1a0它们具有带负权的符号位a4和b4,并用括号标注。如果我们用括号来标注负的被加项,例如(aibJ),那么A和B相乘过程中所包含的操作步骤如下面矩阵所示: A

47、(a4) a3 a2 a1 a0 B (b4) b3 b2 b1 b0 (a4b0)a3b0a1b0a1b0a0b0 (a4b1) a3b1 a2b1a1b1a0b1 (a4b2) a3b2 a2b2 a1b2a0b2 (a4b3)a3b3 a2b3 a1b3 a0b3) a4b4 (a3b4) (a2b4) (a1b4) (a0b4) P p9 p8 p7 p6 p5 p4 p3 p2 p1 p000010011011122222222a0b0a1b0a3b0a2b0a0b1a1b1a3b1a2b1(a4b1)a0b2a1b2a3b2a2b2a0b3a1b3a3b3a2b3(a4b2)(a4

48、b3)a4b4(a4b0)(a3b4)(a2b4)(a1b4)(a0b4)图2.8 5位乘5位的直接补码阵列乘法器逻辑原理图00000p9p8p7p4p1p3p2p5p6p0 上图所示是5位乘5位的直接补码阵列乘法器逻辑原理,其中使用不同的逻辑符号来代表0类、1类、2类、3类全加器。2类和1类全加器具有同样的结构,但是使用不同的逻辑符号可使乘法阵列的线路图容易理解。该实现方式称为三段阵列乘法器,其中右上角的三角形中只用0类全加器,左上角的三角形只用1类全加器,阵列的最后两行只用2类全加器。其中使用不同的逻辑符号来代表0类、1类、2类、3类全加器。2类和1类全加器具有同样的结构,但是使用不同的逻

49、辑符号可使乘法阵列的线路图容易理解。在n位乘n位的一般情况下,该乘法器需要(n2)2个0类全加器,(n2)个1类全加器,(2n3)个2类全加器,1个3类全加器,总共是n(n1)个全加器。 故所需的总乘法时间是: tp=Ta+2(n-1)Tf=2T+(2n-2)2T=(4n-2)T (2.31)例例20 设A补(01101)2, B补(11011)2, 求AB补?解解: (0) 1 1 0 1 13 ) (1) 1 0 1 1 5 (0) 1 1 0 1 (0) 1 1 0 1 (0) 0 0 0 0 (0) 1 1 0 1 0 (1) (1) (0) (1) 0 (1) 0 1 1 1 1 1

50、 1 (1) 1 0 1 1 1 1 1 1 65 扩展符号位 符号位验证: 127026125124123122121120 128(32168421) 65(13)(5)652.4 定点除法运算2.4.1 原码除法运算原理原码除法运算原理 两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。设有n位定点小数(定点整数也同样适用):被除数, 其原码为 原f .n110除数, 其原码为 原f .n110 则有商q/,其原码为q原(ff)+(0.n110/0.n110) 商的符号运算qfff与原码乘法一样,用模2求和得到。商的数值部分的运算,实质上是两

51、个正数求商的运算。根据我们所熟知的十进制除法运算方法,很容易得到二进制数的除法运算方法,所不同的只是在二进制中,商的每一位不是“1”就是“0”,其运算法则更简单一些。下面仅讨论数值部分的运算。设被除数0.1001,除数0.1011,模仿十进制除法运算,以手算方法求的过程如下:得的商q0.1101,余数为r0.00000001。上面的笔算过程可叙述如下: 1. 判断是否小于?现在21, 表示够减, 小数 点后第一位商“1”, 作r021, 得余数r1。 3. 比较r1和22, 因r122, 表示够减, 小 数点后第二位商“1”, 作r122, 得余数r2。 4. 比较r2和23, 因r224,

52、表示够减, 小数 点后第四2位商“1”, 作r324, 得余数r4, 共求四位商, 至此除法完毕。 在计算机中小数点是固定的,不能简单地采用手算的办法。为便于机器操作,使“除数右移”和“右移上商”的操作统一起来。事实上机器与人运算过程不同,人会心算一看就知道够不够减。但机器却必须先作减法,若余数为正才知道够减;若余数为负才知道不够减。不够减时必须恢复原来的余数以便再继续往下运算。这种方法称为恢复余数法恢复余数法。要恢复原来的余数,只要当前的余数加上除数即可。但由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。实际中常用不恢复余数法又称加减交替法加减交替法。其特点是运算过程中如出现不

53、够减则不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控制简单。早期计算机中,为了简化结构,硬件除法器的设计采用串行的1位除法方案。即多次执行“减法移位”操作来实现,并使用计数器来控制移位次数。由于串行除法器速度太慢,目前已被淘汰。不恢复余数除法即加减交替法的实现方式:设被除数为: 除数为: 1. x y补 = x 补 + -y补 若:x y 0 则商数为1,并进行第二步减, 即: x y补 ( 21 y) 若:x y 0 则商数为0,还原减法操作,在进行第二步减, 即: x ( 21 y) 补 x 补 + - ( 21 y) 补 上面过程也就是: x y y ( 21 y) 补

54、x y 补 y ( 21 y) 补 x y 补 ( 21 y) 补 步骤2同理,从而用加减交替法实现除法操作。2.4.2 并行除法器并行除法器1. 可控加法可控加法/减法减法(CAS)单元单元 和阵列乘法器非常相似,阵列式除法器也是一种并行运算部件,采用大规模集成电路制造。与早期的串行除法器相比,阵列除法器不仅所需的控制线路少,而且能提供令人满意的高速运算速度。阵列除法器有多种多样形式,如不恢复余数阵列除法器,补码阵列除法器等等。 先介绍可控加法/减法(CAS)单元,它将用于并行除法流水逻辑阵列中,它有四个输出端和四个输入端。当输入线P0时,CAS作加法运算;当P1时,CAS作减法运算。逻辑结

55、构图: CAS单元的输入与输出的关系可用如下一组逻辑方程来表示: SiAi(BiP)Ci Ci1(AiCi)(BiP)AiCi (2.32) 当P0时,方程式(2.32)就等于我们前面学习的一位全加器(FA)的公式: SiAiBiCi Ci1AiBiBiCiAiCi 当P1时,则得求差公式: SiAiBiCi Ci1AiBiBiCiAiCi (2.33) 其中BiBi1。在减法情况下,输入Ci称为借位输入,而Ci1称为借位输出。 为说明CAS单元的实际内部电路实现,将方程式(2.32)加以变换,可得如下形式: Si Ai(BiP)Ci AiBiCiPAiBiCiPAiBiCiPAiBiCiP

56、AiBiCiPAiBiCiPAiBiCiPAiBiCiP Ci1 (AiCi)(BiP)AiCi AiBiPAiBiPBiCiPBiCiPAiCi 在这两个表达式中,每一个都能用一个三级组合逻辑电路(包括反向器)来实现。因此每一个基本的CAS单元的延迟时间为3T单元。2. 不恢复余数的阵列除法器不恢复余数的阵列除法器先假定所有被处理的数都是正的小数。 不恢复余数的除法也就是加减交替法。在不恢复余数的除法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。当出现不够减时,部分余数相对于被除数来说要改变符号。这时应该产生一个商位“0”,除数首先沿对角线右移,

57、然后加到下一行的部分余数上。当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。下图是4位除4位的不恢复余数阵列除法器的逻辑原理图。其中被除数0.123456 (双倍长)除数0.123商数0.q1q2q3余数0.00r3r4r5r6字长 n14 由上图看出,该阵列除法器是用一个可控加法/减法(CAS)单元所组成的流水阵列来实现的。推广到一般情况,一个(n1)位除(n1)位的加减交替除法阵列由(n1)2个CAS单元组成,其中两个操作数(被除数与除数)都是正的。 最上面一行所执行的初始操作经常是减法。因此最上面一行的控制线P固定置成“1”。减法是用2的补码运算来实现的,这时右端各

58、CAS单元上的反馈线用作初始的进位输入。每一行最左边的单元的进位输出决定着商的数值。将当前的商反馈到下一行,我们就能确定下一行的操作。由于进位输出信号指示出当前的部分余数的符号,因此,它将决定下一行的操作将进行加法还是减法。 对不恢复余数阵列除法器来说,在进行运算时,沿着每一行都有进位(或借位)传播,同时所有行在它们的进位链上都是串行连接。而每个CAS单元的延迟时间为3T单元,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n1)2,考虑最大情况下的信号延迟,其除法执行时间为 td3(n1)2T 其中n为尾数位数。例例20 0.101001, 0.111, 求。解解:补1.

59、001被除数0.1 0 1 0 0 1减1.0 0 1 余数为负1.1 1 0 0 0 1 0q00余数左移1.1 0 0 0 1加0.1 1 1 余数为正0.0 1 1 0 1 0 q11余数左移0.1 1 0 1减1.0 0 1 余数为负1.1 1 1 1 0 q20余数左移1.1 1 1加0.1 1 1 余数为正0.1 1 0 0 q31故得 商 q q0.q1q2q3 0.101 余数 r (0.00r3r4r5r6) 0.000110 2.5 定点运算器的组成2.5.1 逻辑运算逻辑运算计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数,是

60、指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指逻辑非逻辑非、逻逻辑加辑加、逻辑乘逻辑乘、逻辑异逻辑异四种基本运算。1. 逻辑非运算逻辑非运算 逻辑非也称求反求反。对某数进行逻辑非运算,就是按位求它的反,常用变量上方加一横来表示。2. 逻辑加运算逻辑加运算两数进行逻辑加,就是按位求它们的“或”,所以逻辑加又称逻辑或逻辑或,常用记号“V”或 “”来表示。3. 逻辑乘运算逻辑乘运算两数逻辑乘,就是按位求它们的“与”,所以逻辑乘又称“逻辑与逻辑与”,常用记号“”或“”来表示。4. 逻辑异运算逻辑异运算对两数进行异或就是按位求它们的模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论