版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 运算方法与运算器,本章内容:,数据与文字的表示方法 定点加法、减法运算 定点乘法、除法运算 定点运算器的组成 浮点运算方法和浮点运算器 本章小结,2.1 数据与文字的表示方法,1、 数据格式 2、 数的机器码表示 3、 字符与字符串的表示方法 4、 汉字的表示方法 5、 校验码,数据与文字的表示方法,数据的表示方法,文字与符号 的表示方法,2.1.1 数据格式,计算机中常用的数据表示格式有两种: (1)定点格式 (2)浮点格式,定点格式(小数点位置固定):可表示的数值范围有限,但要求的处理硬件比较简单。,浮点格式(小数点位置浮动):可表示的数值范围大,但要求的处理硬件比较复杂 。,数据
2、格式,1.定点数的表示方法,定点表示:约定机器中所有数据的小数点位置是固定 的,小数点就不再使用记号“.”来表示。 定点数据的形式:纯小数或纯整数。,(设:定点数表示为012n 其中:0符号位,0代表正号,1代表负号),小数点的位置约定在符号位x0的后面(不显示),小数点的位置约定在数值位xn的后面(不显示),定点数的表示方法,定点数例,例:(符号位约定:0代表正号,1代表负号) X=+1010110.,纯整数:X = 01010110.,正数,符号位取0,Y= - 1101001.,纯整数:Y = 11101001.,负数,符号位取1,X=+0.11011,Y=-0.10101,小数点隐藏,
3、纯小数:X = 0.11011,小数点隐藏,纯小数:X = 1.10101,纯整数:X = 01010110,纯整数:Y = 11101001,纯小数:X = 0.11011,纯小数:X = 1.10101,注意到: 无论是整数或是小数,在机器数的表示中,都不出现小数点“.”,只是约定其位置。,定点数例,小数点隐藏,小数点隐藏,(设:x=012n 则: 数值位各位均为0时最小;各位均为1时最大) 纯小数的表示范围: 0|12n (2.1) 纯整数的表示范围为: 0|2n1 (2.2) 目前计算机中多采用定点纯整数表示,因此将定点数 表示的运算简称为整数运算。,定点数的表示方法,2、浮点数的表示
4、方法,例:156.78 =15.678101 = 1.5678102 = 0.15678103=MRE 其中:M为尾数;R为基数;E为阶码(指数)。 (尾数M表示数的有效数字,阶码E表示数的范围),那么,计算机中究竟采用哪种数据形式?,显然存在多种数据形式,什么是浮点数表示:,在定点计算机中,一般约定: 尾数|M|1.0,并按此原则 确定各数据的浮点表示格式。 上例 +156.67=0.15678 103 (规格化表示法) 同理:对于二进制数 +1011.1101= +0.10111101 2+4 0.10111101 2+100 =MRE (且最高数值位为1, 规格化表示法),二进制数,可见
5、: 一个机器浮点数由阶码E和尾数M及其符号位组成。,浮点数表示,约定:尾数M用定点小数表示,给出有效数字的位数,M决 定了浮点数的表示精度; 阶码E:用整数形式表示,指明小数点在数据中的位 置,其决定了浮点数的表示范围。 浮点数的一般形式为:,浮点数表示,按照 IEEE754 的标准,32位浮点数和64位浮点数的标准格式为:,其中:=浮点数的符号位,0表示正数,1表示负数。 =尾数,23位,用纯小数表示; =阶码,8位,用纯整数表示。 阶符采用隐含方式,即采用移码方式来表示正负指数。,其中:=浮点数的符号位,0表示正数,1表示负数。 =尾数,52位,用纯小数表示。 =阶码,11位,阶符采用隐含
6、方式,即采用移码方式来表示正负指数。,32位:,64位:,浮点数表示,几点注释: 为了提高浮点数据的表示精度,当尾数的值不为0时,其绝对值:|M|0.5,即:尾数绝对值域的最高有效位应为1,否则通过修改阶码(即左右移动小数点)的办法,使其变成这一表示形式,这称为浮点数的规格化表示。(后面再讨论) 在字长相同的条件下, 浮点数所表示的范围显然远比定点数大。 以下两种情况计算机都把该浮点数看成零值,称为机器零。 当浮点数的尾数M为 0;(不论其阶码E为何值) 当阶码E的值Emin值时。(不管其尾数M为何值),浮点数表示,然后移动小数点,使其尾数为纯小数: +10100.10011+0.101001
7、001125 数符 S0,阶码 E5, 尾数 M0.1010010011 得到: +20.59375 的浮点数形式为: 0.10100100112+101,例:将十进制数20.59375转换成二进制浮点数的形式。,解: 首先分别将整数和分数部分转换成二进制数: +20.59375+10100.10011,注意到:这不是IEEE754标准形式。,3.十进制数串的表示方法,十进制数在计算机内以符号来处理,其主要有两种表示形式: 1.字符串形式 字符串形式:每一个十进制的数位或符号位都用一个字节存放。 如:+25,-38,十进制数的表示方法,2.压缩的十进制数串形式(BCD码) 压缩的十进制数串形式
8、:每个字节存放两个十进制的数码。 如:+153、-12,(字节),(字节),(字节),(字节),2.1.2 数的机器码表示,基本思想:把符号位和数字位一起编码来表示一个 实际的数,使符号位也能参与计算。 主要表示方法有:原码、补码、反码、移码等。 各种编码表示的数称为机器数或机器码;其对 应的真实数值称为该编码对应的真值。,数的机器码表示,1. 原码表示法,若定点小数为: x=0.12n, 则其原码表示的 定义是: 式中原是机器数,是真值。 例如,+0.1001,则原0.1001 -0.1001,则 原1.1001,数的原码表示,x 1 x 0 (x为正) 1-x =1+ |x| 0 x -1
9、 (x为负),对于定点整数 x =12n,则原码的定义是: 设:定点整数的原码形式为: 原=012n,数的原码表示, 2n0 2n2n| 02n,例如,+11001,则原011001 -10101,则 原110101,数的原码表示,注意到:“+0”、“-0” 原码在机器中有两种形式: 对于定点整数: +0原 =00000. -0原 =10000.,即:“0”的原码表示有两种,不唯一。,可见:原码表示法非常简单、易懂。,此外,原码的另一缺点是:由于数值部分是采用 绝对值表示的,因而使得加减法运算比较麻烦,而加 减法运算正是计算机中最常使用的运算。 所以,必须探讨解决方法。 补码则正是一种解决方法
10、。,数的原码表示,2.补码表示法,补码的概念(以钟表对时为例): 假设:现在的标准时间为4点正; 而表钟已经7点 了,为了校准时间,可以采用两种方法: (1)将时针退 3 格(7-3=4); (2)将时针向前拨9格(7+9=16 4)。 显然:这两种方法都能对准到4点。 原因在于: 当模数为12时,减3和加9是等价的。,数的补码表示,当模数Mod=12时,称:9是(-3)补码。 用数学公式表示:-3+9(mod12) “模Mod”表示可以被丢掉的数值。上式在数学上称 为同余式。 设某数为x,当Mod=12时: x-3=x+9、x+7=x-5 或:x+12=x (Mod=12) 都是等价的。 从
11、这里可以得到一个启示,就是:当负数用补 码表示时,可以把减法转化为加法。,x 2n x 0 2n+1+x= 2n+1 -|x| 0 x -2n,(mod 2n+1),补码的定义:,以定点整数(x =12n)为例:,正数的补码就是本身,负数的补码需作运算,数的补码表示,例:已知x= +10111,y= -11011, 求 x补、y补 (n=5) 按定义:x补 =010111 y补 =25+1+y=1000000-11011=100101,问题:根据补码定义,求负数的补码时需作一次减法运算,这显然不是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补问题。,数的补码表示,注意到:0的补码只有一
12、种形式 对于定点小数: 0补0补0.0000 对于定点整数: 0补0补00000 .,3. 反码表示法 (用于原码转换为补码),二进制数求反码:正数:符号取0、各位数码保持不变; 负数:符号取1,各位数码0变为1,1 变为0,即得到。 即:若 xi =0,则 Xi=1。 若 xi =1,则 Xi=0.,数的反码表示,可见:反码非常容易得到。,例: 已知 x= +10111,y= -11011, 求 x反、y反,解: x= +10111 0 按定义: x反= 010111 y= -11011 0 按定义: y反= 100100,注意到: 0的反码也有两种,不唯一。 即:0反0000; 0反111
13、1,通过反码求补码的方法:,当x为正数时: 补反 当x为负数时: 补反+1 可以通过将该数:“符号位置1,数值位各位取反,然后在末位上加1” ,即可直接获得该数对应的补码。,数的补码与反码关系,例:已知x=+1011,y=-1101, 求 x补、y补 按定义:x0 x补 =x反= 01011 (注:正数的补码、反码, 数值保持不变!) y0 y补 =y反+1 =10010+1 =10011,数的补码与反码关系,由反码求补码方法的最大优点: 消除了负数求补码过程中的减法计算.,求一个负数的补码的另一种有效的转换方法: 对于负数,先写出其原码,符号位保持为1,数值部分由低位向高位转换,对开始遇到的
14、0和第一个1,保持原值不变,第一个1以后的各位均取反。 例: y=-0.110100, 求 y补 解: y原=1110 100 (y0) y补=1001 100,保持不变,全部取反,y反=1001011 y补=1001011+1 =1001100 (结果相同),数的补码与反码关系,4. 移码表示法,在计算机中,移码通常用于表示浮点数的阶码,所 以移码一般只用于整数的表示。,若用补码表示阶码,则很难直接判断阶码的大小。 而移码则可以解决此问题。,对定点整数, 移码的定义是: 移2n2n2n (n为移码数值部分的位数),例如,十进制,采用移码:移= x + 25,+10101 + 100000,+
15、11111 + 100000,错,错,正确,正确,0,10101,1,01011,0,11111,1,00001,+10101, 10101,+11111, 11111,= 110101,= 001011,= 111111,= 000001,二进制,补码,例: 当10101 时, 移25x1,10101 当 y -10101 时, y移25y25-101010,01011 注意到: (1)逗号不是小数点,而是表示左边一位是符号位。 (2)移码中符号位0表示的规律与原码、补码、反码 相反。 (3)移码在数值上与补码一致,但是符号位与补码正 好相反!,移码的表示方法,机器码表示法小结:,在数据的四
16、种机器码表示法中: 正数的原码、反码、补码等同于真值;只有负数才分别有不同的表示方法。 补码和移码的0只有一种表示方法,因此其表示范围相对于原码和反码多一种,定点小数可表示-1(移码没有小数形式),正数可表示-2n。,机器码表示法小结,移码表示法主要用于表示浮点数的阶码,可以直接比较大小。 移码在数值上与补码相同,符号位(最高位)正好相反。 由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。(如:有些机器在做加减法时用补码运算,在做乘除法时用原码运算),机器码表示法小结,例6 以定点整数为例,用数轴形式说明原码、反码、补码表示范
17、围和可能的数码组合情况。,机器码表示法小结,例7 将十进制真值(127、1、0、1、127)列表表示成二进制数及原码、反码、补码、移码值。,(见教材P22,自阅)。,例 设机器字长16位,定点表示,尾数15位,数符1位,问:定点整数原码表示时,最大正数是多少? 最小的负数是多少?,解: 定点整数原码: 最大正数值=0 111111111111111 +(2151)10 最小的负数值=1 111111111111111 (2151)10,机器码表示法小结,例6假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为: (1)s(1.M)2E128问:它所表示的规格化的最
18、大正数、最小正数、最大的负数、最小的负数是多少?,解: (1)最大正数,(2)最小正数,机器码表示法小结,(23位),(8位),(4) 最大的负数,00000000000000000000000,00000000,1,1.02128,11111111111111111111111,11111111,1,1(1223)2127,(3) 最小的负数,机器码表示法小结,2.1.3 字符与字符串的表示方法,1. 字符的表示方法 目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,共125个元素,因此二进制编码需7
19、位,加一位偶校验位,共8位一个字节。 ASCII码规定二进制数位的最高一位(b7)恒为0,余 下的7位可以给出128个编码,可表示128个不同的字符。,字符和字符串的表示方法,表2.1 ASCII字符编码表,b3b2b1b0位,b6b5b4位,2. 字符串,字符串:是指连续的一串字符,通常方式下,它们依次占用主存中 连续的多个字节,每个字节存一个字符。,例 将字符串:IFABTHENREAD(C)从高位字节到低位字节依次存在主存中。,解: 设:主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“”在主存中也占一个字节的位置。 因而每个字节分别存放的ASCII码
20、为:49、46、20、41、3E、42、20、44、48、45、4E、20、52、45、41、44、28、43、29、20。,字符和字符串的表示方法,主存各字节单元内容,字符和字符串的表示方法,2.1.4 汉字的表示方法,1. 汉字的输入编码 包括:数字码、拼音码和字形码 数字码:常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。 数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便, 缺点是代码难以
21、记忆。 拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。,汉字的表示方法 (汉字的输入编码),字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。把汉字的笔划部件用字母或数字进行编码, 按笔划的顺序依次输入, 就能表示一个汉字。 为了加快输入速度,在上述方法基础上,发展了词组输入联想输入等多种快速输入方法。但是都利用了键盘进行“手动”输入。理想的输入方式是利用语音或图象识别技术“自动”将拼音或文本输入到计算机内,使计算机能认识汉字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想已经成为现实。,汉字的表示方法 (
22、汉字的输入编码),2.汉字内码 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。 注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。,汉字的表示方法 (汉字的内码),3. 汉字字模码,字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。,例如:,字模码,汉字的表示方法 (汉字字模码),此例,汉字的字模码为: 16位 16位=32字节,注意到: 字模点阵只能用来构成汉字库,而不能用于机内存
23、储。其仅用于汉字的显示输出或打印输出。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。 汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。,汉字的表示方法 (汉字字模码),各种因素常常导致计算机在处理信息过程中出现错误。为了 防止错误,可将信号采用专门的逻辑线路进行编码以检测错误, 甚至校正错误。,2.1.5 校验码,最简单且应用广泛的检错码方法是奇偶校验法,即:采用一位校验位的奇校验或偶校验的方法。,设(01n1)是一个n位字, 则奇校验位定义为: C01n1 ,式中代表按位加, 只有当中包含有奇数个1时, 才使 C1, 即 C0。
24、,同理,偶校验位定义为: C01n1 即中包含偶数个1时, 才使C0。,效验码,假设:一个字从部件 A 传送到部件 B。在源点 A, 按约 定将校验位C与数据合在一起 (01n-1C)送到B。 若约定采用偶效验: 设,在B点真正接收到的是(01n1C ),然后 做校验: F01n1C 若F0,表明字传送正确; 若F1,意味着收到的信息有错。 奇偶校验可提供奇数个错误检测,但无法检测偶数个错误, 更无法识别错误信息的位置。(循环校验码CRC可解决此问题),效验码,例,效验码,加入校验位前传送的数码为:,加入校验位后传送的数码为:,效验码,2.2 定点加法减法运算,2.2.1 补码加法 2.2.2
25、 补码减法 2.2.3 溢出概念与检验方法 2.2.4 基本的二进制加法、减法器 2.2.5 十进制加法器,定点加减法运算,2.2.1 补码加法,补码加法的公式是: 补补补 (mod 2) 现分四种情况来证明。(见教材P29,自阅) 假设,采用定点小数表示,因此证明的先决条件是: 1, 1, 1。 (1)0,0,则0。 相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:补补补(mod 2),补码的加法,(2)0,0, 则0或0时,2 () 2,进位2必丢失; 又因()0,所以: 补补补(mod 2) 当0 时,2 () = 补,所以: 补补2()补(mod 2),补码的加法
26、,(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意义下,任意两数的补码之 和等于该两数之和的补码。 即: 补补补 (mod 2) 这是补码加法的理论基础,其结论也适用于定点整数。,例 :补0.1001, 补0.0101, 计算:? 补0.1001 补0.0101 补0.11
27、10 0.1110,补码的加法,例:0.1011, 0.0101, 求。,解: 补0.1011,补1.1011 补0.1011 补1.1011 补 10.0110 0.0110,最高位1自行丢失,补码的加法,可见,补码加法的特点为: 1、符号位作为数的一部分直接参加运算; 2、超过模数(Mod)的进位要自动丢掉。(整数的计算同样适合,只是模数不同)。,2.2.2 补码减法,由补码的原理可知,补码可以通过加法来完成减 法计算,进而简化运算器的结构。 补码的减法公式如下:,补补补 补补,即: 减法可以变成加法来计算! 公式的证明简单,只需证明: 补= 补 即可。 (见书P30),补码的减法,补码的
28、减法,现证明如下: 补补补(mod 2) 补补补 (2.19a) 补()补补补 补 补补 (2.19b) 将式(2.19a)与(2.19b)相加,得: -补补补补补补 补补补 补补补0 故: -补 补 (2.20),补码的减法,问题是:若已知补,如何求取补?,例10 已知 10.1110,20.1101, 求: 1补, 1补, 2补, 2补。,解: 1补1.0010 1补 1补2-40.11010.00010.1110 2补0.1101 2补 2补2-41.00100.00011.0011,补码的减法,例11 0.1101, 0.0110, 求。,解 : 补0.1101 补0.0110 补1.
29、1010 补 0.1101 补 1.1010 补 1 0.0111 0 0.0111,补码的减法,2.2.3 溢出概念与检测方法,以定点小数为例: 在定点小数机器中,数的表示范围为|1. 在运算过程中如 出现大于1的现象,称为“溢出”。(这在定点机中是不允许的),溢出的特征: 两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。 两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。,溢出概念与检测方法,例12 0.1011, 0.1001, 求。,解: 补0.1011 , 补0.1001 补 0.1011 补0.1001 补1.0100 0 两正数相加,结果为负
30、,显然错误。 (运算中出现了“上溢”),溢出概念与检测方法,有进位,无进位,又例 0.1011, 0.0010, 求。,解: 补0.1011 , 补0.1001 补0.1011 补0.0010 补0.1101 两正数相加,结果正确,无溢出,溢出概念与检测方法,例13 0.1101, 0.1011, 求。,解:补1.0011 补1.0101 补 1.0011 补 1.0101 补 1 0.1000 0.1000,两负数相加,结果为正,显然错误。 (运算中出现了“下溢”),溢出概念与检测方法,无进位,有进位,产生“溢出”的原因: 分析可知,在加法运算时,当最高有效数值位的运算进位与符号位的运算进位
31、不一致时,将产生运算“溢出”。,溢出概念与检测方法,“溢出”检测方法:,为了判断“溢出”是否发生, 可采用两种检测的方法。,第一种溢出检测方法: “单符号位法”。 从例题中看到: 当符号位进位Cf与最高有效位进位Co不一致时, 即 会产生溢出。 故:溢出逻辑表达式为: VCfCo 其中: Cf为符号位产生的进位, Co为最高有效位产生的 进位。(显然:此逻辑关系可用异或门方便地实现)。 在定点机中,当运算结果发生溢出时,机器通过逻 辑电路自动检查出溢出故障,并进行中断处理。,第二种方法: 采用双符号位法,又称为“变形补码”或“模4补码”.,溢出概念与检测方法,变形补码: 符号位由一位变为二位,
32、如:,1. 两个符号位都看作数码一样参加运算 2.两数进行以4位模的加法,即最高符号位上产生的进位同样要被丢掉。 注:采用变形补码后,如果两个数相加后,其结果的 符号位出现“01”或“10”两种组合时,表示发生溢出。 因为两个绝对值小于1的数相加,其结果不会大于或 等于2。,溢出概念与检测方法,在用变形补码做加法运算时, 必须注意:,例14 0.1100, 0.1000,求。,溢出概念与检测方法,解 : 补00.1100,补00.1000 补 00.1100 补 00.1000 01.0100 两个符号位出现“01”,表示已溢出,即结果大于1。(上溢),又例 0.1100, 0.0001,求。
33、,溢出概念与检测方法,解 : 补00.1100,补00.1000 补 00.1100 补 00.0001 00.1101 两个符号位 =“00”,表示无溢出。,例15 0.1100, -0.1000, 求,溢出概念与检测方法,解 : 补11.0100,补11.1000 补11.0100 补11.1000 10.1100 两个符号位出现“10”,表示已溢出,即结果小于1。(下溢),溢出概念与检测方法,结论: 当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。 故: 溢出逻辑表达式为 VSf1Sf2, 其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实
34、现。 2. 模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。,2.2.4 基本的二进制加法/减法器 两个二进制数字Ai、Bi和一个进位 输入Ci相加,产生一个和输出Si以及 一个进位输出Ci1。(一位全加器) 右表列出一位全加器进行加法运算 的输入输出真值表。 根据真值表,三个输入端和两个 输出端可按如下逻辑方程进行联系: SiAiBiCi Ci1AiBiBiCiCiAi,二进制加法/减法器,按表达式组成的一位全加器(FA)示意图 (b) 对一位全加器(FA)来说, Si的时间延迟为6T (每级异或门延迟3T), Ci1的时间延迟为5T,其中 T被定义为相应于单级逻辑 电路的单
35、位门延迟。T通常 采用一个“与非”门或一个 “或非”门的时间延迟来 作为度量单位。,二进制加法/减法器,补码运算的二进制加法/减法器的逻辑结构图。由图 看到, n个1位的全加器(FA)可级联成一个n位的行波进 位加减器。 M为方式控制输入线,当M0 时,作加法运算; 当M1 时,作减法运算,注意B补的求法。 图中:左边表示出单符号位法的溢出检测逻辑;当 CnCn1时,运算无溢出;而当CnCn1时,运算有溢 出,经异或门产生溢出信号。,电路示意图,二进制加法/减法器,n位的行波进位加减器电路,二进制加法/减法器,现在我们计算一个n位的行波进位加法器的时间延迟。 (见书P35-36) 假如采用图
36、(a)所示的一位全加器并考虑溢出检 测,那么n位行波进位加法器的延迟时间ta为: tan2T9T (2n9)T 9T为最低位上的两级“异或”门;再加上溢出“异或”门 (3T), 2T为每级进位链的延迟时间。,当不考虑溢出检测时,有: ta(n-1)2T9T ta意味着加法器的输入端输入加数和被加数后, 在 最坏情况下加法器输出端得到稳定的求和输出所需 的最长时间。显然这个时间越小越好。注意,加数、 被加数、进位与和数都是用电平来表示的,因此,所谓 稳定的求和输出,就是指稳定的电平输出。 (CAI演示),二进制加法/减法器,延迟时间ta为: 3T,考虑溢出检测时,延迟时间ta为: tan2T9T
37、 (2n9)T,当不考虑溢出检测时,有: ta(n-1)2T9T,延迟时间ta为: 2T,2.3 定点乘法运算,2.3.1 原码并行乘法 2.3.2 补码并行乘法,定点乘法运算,2.3.1 原码乘法,1.人工算法与机器算法的同异性 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。 设:n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数 原f .n110 乘数 原f .n110 则乘积: 原(ff)(0.n110)(0.n110) 式中,f为被乘数符号,f为乘数符号。,原码乘法运算,乘积符号的运算法则是:
38、同号相乘为正,异号相乘为负。由于被乘数和乘数的符号组合只有四种情况(ff00, 01, 10, 11),因此积的符号可按“异或”(按位加)运算得到,即: (ff) 数值部分的运算方法与普通的十进制小数乘法类似, 二进制数的乘法规则更为简单。 设0.1101,0.1011. 先用习惯方法求其乘积,观察其过程:,原码乘法运算,(手工计算过程),手工运算的过程与十进制乘法相似。 如果被乘数和乘数用定点整数表示,运算过程也完全一样。,原码乘法运算,然而,这种习惯的手工算法对机器并不完全适用。,原因之一:机器通常只有n位长, 运算器也是n位长,而 两个n位二进制数相乘, 乘积可能为2n位。 原因之二:加
39、法器每次只能进行两个操作数的相加,难 以胜任将n个位积同时相加起来的运算。 早期计算机中为了简化硬件结构,采用串行的1位 乘法方案,即多次执行“加法移位”操作来实现。然 而串行方法速度太慢。 随着大规模集成电路问世以来,出现了各种形式 的流水式阵列乘法器,它们属于并行乘法器。,原码乘法运算,2.不带符号的阵列乘法器 设有两个无符号的二进制整数: Aam1a1a0 (m位) Bbn1b1b0 (n位) 它们的数值分别为a和b,即: m1 n1 a ai2ib bj2j i0 j0,原码乘法运算,在二进制乘法中,被乘数A与乘数B相乘,产生(mn)位乘积P: Ppmn1p1p0 (m+n位) 乘积P
40、 的数值为:,实现上述乘法过程所需要的操作和人们的习惯方法非常类似:,am-1 am-2 a1 a0 ) bn-1 b1 b0 am-1b0 am-2b0 a1b0 a0b0 am-1b1 am-2b1 a0b1 +) am-1bn-1 am-2bn-1 a0bn-1 pm+n-1 pm+n-2 pm+n-3 pn-1 p1 p0,原码乘法运算,同时形成所 有的位积因子,阵列乘法器原理结构,加法器阵列,上述过程给出了在m位乘n位不带符号整数的阵列乘法中,“加法移位”操作的被加数矩阵。每一个部分乘积项(位积)aibj叫做一个被加数。 这mn个被加数aibj aibj|0im1和0jn1可以用mn
41、个“与”门并行地产生。 (1个门延时) 所以,设计高速并行乘法器的基本问题,就集中在 如何构建加法器阵列,有效缩短被加数矩阵中每列所需的加法时间。 5位5位阵列乘法器的逻辑电路图演示:,原码乘法运算,若乘法器为n位n位时,需要n(n1)个“全加器”和n2个“与”门。,原码乘法运算,令Ta为“与门”的传输延迟时间,Tf为全加器(FA) 的进位传输延迟时间,假定用2级“与非”逻辑来实现 FA的进位链功能和“与门”逻辑,那么就有: Ta Tf 2T 由上面的分析可以得出:最坏情况下的延迟途径, 既是沿着矩阵p4垂直线和最下面的一行。因而得: n位n位不带符号的阵列乘法器总的乘法时间为: tmTa+(
42、n1) 6T (n1)Tf 2T(n1) 6T (n1)2T (8n6) T,原码乘法运算,例16 已知两个不带符号的二进制整数 A 11011, B 10101,求每一部分乘积项aibj的值与p9p8p0 的值。 解:,原码乘法运算,1 1 0 1 1 =A (2710) 1 0 1 0 1 = B (2110) 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 + 1 1 0 1 1 1 0 0 0 1 1 0 1 1 1 =P (56710) a4b0=1 a3b0=1 a2b0=0 a1b0=1 a0b0=1 a4b1=0 a3b1=0 a2b1=0 a1
43、b1=0 a0b1=0 a4b2=1 a3b2=1 a2b2=0 a1b2=1 a0b2=1 a4b3=0 a3b3=0 a2b3=0 a1b3=0 a0b3=0 a4b4=1 a3b4=1 a2b4=0 a1b4=1 a0b4=1,3.带符号的阵列乘法器 (1) 对2求补器电路 已知,一个负数的常规求补过程: 例: X=-1110, 则:X补=1 0010; Y=-0100,则: Y补=1 1100 算法特点:从数据的最右边开始向左边逐位看数,找到第 一个“1”为止。该“1”的左边各位全部取反(不包括符号位); 该“1”的右边各位(包括该“1”)保持不变。 在计算机的算术运算部件设计中,经常
44、用到求补 电路。由上述分析的算法特点,可以设计一个具有使 能控制的二进制对2求补器电路,如图2.6所示。,带符号的阵列乘法器,演示对2求补电路的工作过程,32T,3T+2T,最长的信号 延迟通路,(见教材P37),所需的总时间延迟为: tTC32T5T,从上面的电路分析可以得出: 在对2求补时,要采用按位扫描技术来执行所需要的求补操作。 令Aana1a0是给定的(n1)位带符号的数,要求确定它的补 码形式。最右端的起始链式输入C1必须恒置成“0”。 当控制信号线 E=1时,启动对2求补的操作。 当控制信号线 E=0时,输出将和输入相等。 显然,可以利用符号位来作为控制信号“E”。 用这种对2求
45、补器来转换一个(n1)位带符号的数,所需的总 时间延迟为: tTCn2T5T(2n5)T (2.28) 其中:每个扫描级需2T延迟,而5T则是由于“与”门和“异或”门引 起的。,带符号的阵列乘法器,(2) 带求补器的无符号阵列乘法器 方法:两个补码相乘,先用求补法将补码转化为原码。然后将数值部分使用不带符号的阵列乘法器求出乘积的绝对值;符号位单独处理。再根据乘积的符号位对乘积的绝对值求补,得出乘积的补码。 (n1)(n1)位带求补器的阵列乘法器逻辑方框图。,带符号的阵列乘法器,在这种逻辑结构中,共使用三个求补器。其中,两个算 前求补器的作用是:将两个操作数A和B的数值部分,在被不带 符号的乘法
46、阵列(核心部件)相乘以前,先变成绝对值(原码)。 算后求补器的作用则是:把运算结果变为补码。(当两个输入操作数A、B的符号不一致时,启动求补器) 设:A=anan-1a1a0和B=bnbn-1b1b0均为用定点表示的(n1) 位带符号整数补码。在必要的求补操作以后,A和B的码值送给 nn位不带符号的阵列乘法器,并由此产生2n位真值乘积: ABPp2n1p1p0 p2nanbn 其中:P2n为符号位。(CAI演示),带符号的阵列乘法器,上面CAI演示所示的带求补级的阵列乘法器既适用于原码 乘法,也适用于间接的补码乘法。 在原码乘法中:算前求补和算后求补都不需要,因为输入 数据都是立即可用的。 在
47、间接的补码阵列乘法中:输入的补码形式的数据不能直 接交给无符号阵列乘法器使用,需要先将数据转换为原码,所 以需要增加一些硬件电路,如:算前求补电路和算后求补电路 等。,带符号的阵列乘法器,注意到: 1、间接的补码阵列乘法所进行的算前求补:实质上是将参与运算的补码先转换为其所对应的绝对值,送到无符号乘法阵列;算后求补:是将无符号计算结果再转换回补码。 2、为了完成所必需的算前、算后求补操作,时间大约要比单纯的不带符号的阵列乘法增加1倍。,例17 设15,13,用带求补器的阵列乘法 器求出乘积? (书P38) 解:已知:最高位为符号位,其决定是否启动求补器。 输入数据为补码: 则算前、算后求补都可
48、能需要, 由符号位决定是否启动求补器。 本例: x=+15=(+1111)2, x补=0 1111 ; 01111 (符号位为0,算前无需求补) y=-13=(-1101)2, y补=1 0011 ; 11101 (符号位为1,算前需求补,使y的数值变为正数) 数值部分经由无符号阵列乘法器获得:(算式演示),带符号的阵列乘法器,几点注释 1、 对负数的补码再求补一次,是为了把数值变为正数。 2、 无符号阵列乘法器输出的结果为:11000011。 3、 当x和y的符号不一致,结果的符号位为“1”时 ,则启动 算后求补器,对结果求补,最后得出乘积的补码: 本例: xy补=1 00111101,对应
49、有: xy原 = 111000011。 (真值= -195) 换算成二进制数真值是: ( 11000011)2=(-195)10 十进制数验证: y 15 (13) 195 相等。,可见,求补器的作用是: 1、数据送入无符号阵列乘法器之前,将参与运算的 补码数据先转换为数据的绝对值(由算前求补器完成); 2、乘积的符号位单独形成(通过异或门); 3、数据完成乘法运算后,根据乘积的符号位将两数 绝对值的乘积再转换回补码的形式,得出乘积的补码(由 算后求补器完成)。 由此可见:这种带求补器的阵列乘法器所完成的补码 乘法,实质上属于间接的补码乘法。,带符号的阵列乘法器,2.3.2 直接补码并行计算(
50、教材P39-41),主要思想:将补码的符号位带上负权值,直接 参与运算。,(略),2.4 定点除法运算,定点除法运算,2.4.1 原码除法算法原理 2.4.2 并行除法器,基本原理: 两个原码表示的数相除时,商的符号由两数 的符号位“异或”即可得到,商的数值部分由两数的数值 部分相除求得。 设有n位定点小数(定点整数也同样适用): 被除数,其原码为:原f .n110 除数,其原码为:原f .n110 商q/,其原码为: q原(ff)+(0.n110/0.n110) 商的符号运算qfff与原码乘法一样。,原码除法运算原理,2.4.1 原码除法运算原理,商的求法:商的数值部分的运算,实质上是两个正
51、数 求商的运算。所以,原码的除法只需考虑两个正数相 除即可。 与十进制除法运算不同的是:在二进制计算中, 商的每一位不是“1”就是“0”,其运算法则更简单一些.,定点除法运算,设:被除数0.1001,除数0.1011,模仿十进制 除法运算,以手算方法求,该步不作,计算机计算需考虑的几点: 1、计算机中,小数点是固定的,不能简单地采用手算 的办法。为便于机器操作,计算机常采用 “余数左移”的 方法来替代“除数右移”。 2、机器的运算过程和人不同,它不能直接判断够不 够减:必须先作减法,若余数为正,才知道够减;若余数 为负,则不够减。 发现不够减时,必须恢复原来的余数,才能继续往下 运算。这种方法
52、又称为恢复余数法。 由于要恢复余数,使计算的效率降低,同时使除法过 程的步数不固定,因此控制比较复杂。,定点除法运算,显然:恢复余数法中包含有一些无效(冗余)运算。 实际中,一般采用不恢复余数法,又称加减交替法。,“不恢复余数法”除法规则: (被除数x,除数y) 1、首先做(x-y)运算,即:x+-y补 ; 2、 判断余数符号: 若余数为正(够减),则:商上“1”, 余数左移一位,然后做减除数(+-y补)运算; 若余数为负(不够减),则:商上“0”; 余数左移一位,然后做加除数(+y补)运算。,注意: 在定点小数的原码除法运算中,要求: (1)无论x、y为正或负,均取正的数值(取:| x| 、
53、|y|)进行计算。即:原码除法只进行两正数的相除, 符号位单独考虑。 (2) 要求:xy,以保证:商q=x/y也是小数。 (3)在具体计算中,减法仍然须采用补码进行计 算,即: +-y补 实现。,加减交替法实例:,例 0.101001, - 0.111,用原码除法求:。 解:xf=0,yf=1,|x|=0.101001,|=0.111, |补0.111,|补1.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 0q11 余数左移0.
54、1 1 0 1 减* 1.0 0 1 余数为负1.1 1 1 1 0q20 余数左移1.1 1 1 加* 0.1 1 1 余数为正0.1 1 0 0q31 故得 商 |q|q0.q1q2q30.101 余数 r0.000110 符号位:ff =01=1 所以:原= 1.101 即:= - 0.101,加减交替法的算法特点: 1、运算过程中,无论够减或是不够减,可以根据余 数符号得出判断,进而直接决定下一步的运算,不必考 虑余数的恢复问题。 2、算法步数固定,控制简单,被广泛使用。 早期计算机中,一般采用串行的1位除法方案。即 多次执行“减法移位”操作来实现, 这种串行除法器 方案速度太慢,目前
55、已被淘汰。 目前计算机主要采用集成阵列除法器来实现。,定点除法运算,与阵列乘法器非常相似,阵列式除法器也是一种并行运算部 件,采用大规模集成电路制造,能提供令人满意的高速运算。 阵列除法器有多种多样形式,如不恢复余数阵列除法器,补码 阵列除法器等等。 1、可控加法/减法(CAS)单元: CAS用于并行除法流水逻辑阵列中,它有四个输出端和四个输 入端。当输入线P0时,CAS作加法运算;当P1时,CAS作减 法运算。逻辑结构图,并行除法器,2.4.2 并行除法器,(CAS单元),P=0:做加法 P=1:做减法,CAS单元的输入与输出的关系可用如下一组逻辑方程 来表示: SiAi(BiP)Ci Ci
56、1(AiCi)(BiP)AiCi 当P0时,方程式(2.32)就是我们熟悉的一位全加器 (FA)的公式: SiAiBiCi Ci1AiBiBiCiAiCi 当P1时,则得求差公式: SiAiBiCi Ci1AiBiBiCiAiCi 其中BiBi1 在减法情况下,输入Ci称为借位输入,而Ci1称为借位输出。,定点除法运算,2.不恢复余数的阵列除法器 设:所有被处理的数都是正的小数(仍以定点小数为例)。 不恢复余数的除法也就是加减交替法。,“不恢复余数法”除法规则: (被除数x,除数y) 1、首先做(x-y)运算,即:x+-y补 ; 2、 判断余数符号: 若余数为正(够减),则:商上“1”, 余数
57、左移一位,然后做减除数(+-y补)运算; 若余数为负(不够减),则:商上“0”; 余数左移一位,然后做加除数(+y补)运算。,设: 被除数0.123456 (双倍长) 除数 0.123 商数 0.q1q2q3 余数 0.00r3r4r5r6 字长 n14,则: (44)位阵列除法器逻辑结构见后图:,商= 0.q1q2q3,余数= 0.00r3r4r5r6,阵列除法器结构特点: 本例:被除数是一个6位的小数(双倍长度值): 0.123456 它是由顶部一行和最右边的对角线上的垂直输入线来提供的。 除数是一个3位的小数: 0.123 它沿对角线方向进入这个阵列。 因为:在除法中所需要的部分余数的左移,而阵列除法器则是: 让余数保持固定,而将除数沿对角线右移。,定点除法运算,商q是一个3位的小数: q0.q1q2q3 它在阵列的左边产生。 余数r是一个6位的小数: r0.00r3r4r5r6 它在阵列的最下一行产生。,定点除法运算,由图看出,该阵列除法器是用一个可控加法/减法(CAS) 单元所组成的流水阵列来实现的。 推广到一般情况,一个(n1)位除(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压雪车驾驶员可持续发展强化考核试卷含答案
- 健康照护师岗位安全能力考核试卷含答案
- 冲压模具工安全演练能力考核试卷含答案
- 陶瓷彩绘工岗中水平能力考核试卷含答案
- 空管语音通信系统、记录仪机务员岗中技术操作考核试卷含答案
- 临床检验类设备组装调试工风险评估强化考核试卷含答案
- 生物教师职业发展规划
- 采购员职业发展规划范例
- 火花间隙保护器核心知识解析
- 2026年3D生物打印孵化
- 耳鼻喉科中耳炎处理指南
- 简单建筑工程监理合同模板2025
- 管道树脂固化修复合同
- 精神科应急预案及处理
- 中国能源建设集团广东火电工程有限公司2026届春季校园招聘考试参考试题及答案解析
- 迪士尼乐园内部管理制度
- 全国广告设计师职业能力测试试题及真题
- 医学指南解读
- 社区慢病临床路径循证医学证据构建
- 2026年考研政治真题及答案
- (2025)一级消防工程师继续教育题库及参考答案
评论
0/150
提交评论