计算机原理第二章运算方法和运算器.ppt

上传人:牧羊曲112 文档编号:6606216 上传时间:2023-11-17 格式:PPT 页数:89 大小:2.99MB
返回 下载 相关 举报
计算机原理第二章运算方法和运算器.ppt_第1页
第1页 / 共89页
计算机原理第二章运算方法和运算器.ppt_第2页
第2页 / 共89页
计算机原理第二章运算方法和运算器.ppt_第3页
第3页 / 共89页
计算机原理第二章运算方法和运算器.ppt_第4页
第4页 / 共89页
计算机原理第二章运算方法和运算器.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《计算机原理第二章运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《计算机原理第二章运算方法和运算器.ppt(89页珍藏版)》请在三一办公上搜索。

1、第二章 运算方法和运算器(P122),2.1 数据信息的表示方法,2.2算术、逻辑运算部件,2.3 定点加减运算,2.4 定点乘除法运算,2.5 浮点四则运算,2.6 运算器组织,2.1 数据信息的表示方法,2.1.1 进位计数制 一、二进制数的表示对于任意一个二进制数N,用位置计数法表示如下:,用按权展开法表示为,式中,表示各个数字,为或,为整数部分的位数,为小数部分的位数。,例,二、八进制,每位可选用的数码有个:,逢进位,基数为。,例,三、十六进制,每位可选用的数码共16个,为、,逢进位,基数为。,例3,四、二十进制,用二进制编码表示十进制数,称为码。(Binary Coded Decim

2、al),最基本的是码。,例,2.1.2 数制转换,一、二进制数与十进制数之间的转换,例,按权展开,然后相加。,2,(58)10(111010)2,2.纯小数转换“乘 2 取整”法,(0.625)10(0.101)2,(58.625)10(111010.101)2,二、八进制、十六进制与二进制间的转换,823,16 24,1 1 0 1 1 0 1 0.1 0 1 0 1 1,则(11011010.101011)2(332.53)8(DA.AC)16,2.1.3 带符号数的表示(以纯小数为例),真值日常书写中,用正、负符号加绝对值表示数值,这种形式表示的数值称为真值。机器数计算机内部连同符号都一

3、起数字化了的数,称为机器数。一、原码表示法,例真值0.1011111,则原0.1011111 0.1011111,则原1.1011111,例0.1011111,则原X0.1011111 0.1011111,则原(0.1011111)1.1011111注意:真值有两种表示和。原0.000,原1.000,二、反码表示法,例真值0.1001111,则原0.1001111,反0.1001111。0.1001111,则原1.1001111,反1.0110000。,例0.1101111,则反0.1101111 0.1101111,则反(227)+X=10.00000000.0000001+(0.11011

4、11)=1.11111110.1101111=1.0010000,注意:反0.000,反1.111。,三、补码表示法,例0.1010000,原0.1010000,补0.1010000 0.1010000,原1.1010000,补1.0110000,例0.1011101,则补0.1011101 0.1011101,则补0.1011101 10.00000000.1011101 1.0100011注意:+0 补0 补0.000,而 1 补1.000,四、原码、反码与补码之间的关系,对于正数,原反补 对于负数,原反反补补,例已知反1.1010100,求原?解:原反反1.1010100反1.01010

5、11,例已知补1.0111001,求原?解:原补补1.0111001补1.1000111,五、整数的原码、反码及补码,类同于小数,只是把“.”改成“,”,表示隔开符号位。,例若1010101则有原0,1010101 反0,1010101 补0,1010101若1010101则有原1,1010101 反1,0101010 补1,0101011,2.1.4 定点表示与浮点表示,一、定点表示,小数点位置固定不变表示定点数。,定点小数表示:X0.X1X2Xn-1Xn定点整数表示:XnXn-1X1X0.,小数点的位置是一种隐含约定,不需要用某个数位或触发器一类来表示,在运算过程中小数点位置不变。,例一个

6、字节八位二进制硬件表示定点整数和定点小数的典型数值。原码定点整数 原码定点小数绝对值最大负数:1111 1111(271)127 1111 1111(12)绝对值最小负数:1000 00011 1000 000127最大正数:0111 1111271127 0111 1111127非零最小正数:0000 0001+1 0000 000127数的范围:(271)(271)(127)(127),引伸到n位时:(2n11)(2n11)(12(n1)(12(n1),补码定点整数 补码定点小数绝对值最大负数:1000 0000=27=128 1000 0000=1绝对值最小负数:1111 1111=11

7、11 1111=27最大正数:0111 1111=271 0111 1111=127非零最小正数:0000 0001=+1 0000 0001=27数的范围:27(271)1(127),引伸到n位时:2n1(2n11)1(12(n1),定点数表示的缺点:数据表示范围小,例如用位硬件表示的整数,补码表示的整数的范围:215(2151),即:32768 32767,很容易产生溢出;优点:定点数比较简单,表示数据的有效精度高,位可全部用来表 示数据位数。,课堂作业某机器用13位硬件来表示数据,其中一位符号位,12位数据位,分别求原码定点整数绝对值最大负数和补码定点整数绝对值最大负数。(找一个同学上来

8、做),原码定点小数绝对值最大负数:1 1111 1111 1111(1212)绝对值最小负数:1 0000 0000 0001 212 最大正数:0 1111 1111 1111(1212)非零最小正数:0 0000 0000 0001+212,补码定点小数绝对值最大负数:1 0000 0000 0000 1 绝对值最小负数:1 1111 1111 1111 212 最大正数:0 1111 1111 1111(1212)非零最小正数:0 0000 0000 0001+212,二、浮点表示,其中为真值,为比例因子,是尾数。,浮点数格式:补码定点整数补码定点小数,,基数为,浮点数的阶码和尾数都采用

9、补码表示。,例假定某个硬件是一个位的二进制形式,其中阶码位,尾数位,各带一位数符,其浮点数表示范围:,补码浮点表示阶码尾数 真值绝对值最大负数:01111111 10000000.(1)2127绝对值最小负数:10000000 11111111.(27)2135最大正数:01111111 01111111.(127)非零最小正数:10000000 00000001.272135,总结:,位二进制的浮点数的表示范围:2127 2127.(127),更进一步,若阶码为位,尾数为位,则浮点数表示范围:,例若定点整数字长位,内含一位数符,补码表示;则数的表示范围为:,231(2311),例若浮点数字长

10、位;其中阶码位,含一位阶符,补码表示,以为底;尾数位,含一位数符,补码表示,规格化。求浮点数的表示范围。,解:根据题意,可以得出,代入公式,则浮点数的表示范围为:,从例2和例3可以看出,同样32位硬件,浮点表示的数的范围要比定点数大很多。,尾数存放格式为 0.1 或 1.0 等。,例 A 0.0011,B0.0011 AB0.00001001,如果硬件为5位,则 AB0.0000,()A0.110022,B0.110022 AB0.100124,例假定为14位浮点数,阶码 6 位(包含一位符号位),尾数 8位(包含一位符号位),,规格化浮点数的表示范围要小一些,目前所有CPU浮点数据都采用规格

11、化形式表示数据。,例,某浮点数格式如前图所示,字长位;其中阶码位,含一位阶符,补码表示,以为底;尾数位,含一位数符,补码表示,规格化。若浮点数代码为(),求其真值。,E(10100011)2=(1011101)293,N=2930.8125,例按上述浮点格式将(1011.110100)2写成浮点数代码。,解:N(1011.110100)2(0.1011110100)224,E(4)10(00000100)2,M补(1.0100001100)2,浮点数代码为(00000100,10100001100)2(04A18000)16,2.1.5 字符的表示,表21 ASCII码表,表各控制字符代表的意

12、义,2汉字的编码,一、汉字输入码,将每个汉字用一组键盘按键表示。这样形成的汉字编码称为汉字的输入码。汉字输入码应当规则简单、容易记忆,同时为了提高输入速度,输入码的编码应尽可能的短。常见的汉字输入码有数字编码、拼音码和字形码等。数字码如国标区位码,它的特点是无重码,每个编码对应惟一一个汉字。拼音码根据汉字的拼音规则进行编码,具有简单易记的优点;缺点是重码多,因为汉字中有许多同音字。字形码的典型例子是五笔字型编码,它根据汉字的笔画规则进行编码。,每个汉字的编码由两部分组成:第一部分指明该汉字所在的区;第二部分指明它在区中的位置。这两部分用二进制表示时各需要7位,像ASCII码一样,在计算机中实际

13、各占8位。为了与ASCII码相区别,还要有附加的标志。目前最常见的方法是把多余的最高位设置为1。,二、汉字机内码,汉字机内码是用于汉字信息存储、交换、检索等操作的内部代码,一般采用两个字节表示一个汉字。,2.2算术、逻辑运算部件,2.2.1一位全加器,Si表示第位的和,Ci表示进位信号输出,Ci-1表示低位来的进位,Ai与Bi表示两个加数。,则,一位加法单元示意图,2.2.2串行进位并行加法器,串行进位方式是指:逐级地形成各位进位,每一级进位直接依赖于前一级进位。,设有两个n位的数,被加数AAn.A2A1 加数BBn.B2B1 C0为低位来的进位,采用串行进位的并行加法器,优点:逻辑元器件较少

14、,实现简单。缺点:运算时间较长,进位延时较长。为了解决进位链慢的问题,提出了“先行进位”的概念。,2.2.3先行进位并行加法器,先定义:Gi=AiBi 进位生成函数Pi=Ai Bi 进位传递函数,则,先行进位的逻辑式:,C1=G1+P1C0 C2=G2+P2C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 Cn=Gn+PnGn-1+PnPn-1P1C0,特点:同时产生进位。加法器延时缩短。实现相对复杂。,考虑到高位的进位形式中输入变量太多,实际实现时有一个实用器件扇入系数的限制,实际上常采用分级、分组的进位链

15、结构。,1.四位一组先行进位加法器,例设加法器字长16位,每4位为一组,分为4组。,本例中,组内采用先行进位,组间仍然采用的是串行进位。后一组的进位输入要等待前一组的进位输出产生后才能进行运算。,组内并行、组间串行进位加法器,组间先行进位加法器(16位加法器设计中),则推出组间先行进位函数式:,位先行进位加法器称为二级先行结构。组内先行进位:74181器件完成。组间先行进位:74182器件完成。,组内并行、组间并行加法器,2.2.4补码加法器,定义:具有加减法功能的设备称为补码加法器。,2.2.5 算术逻辑运算部件ALU举例,一、SN74LS181,P134,图7-6,181的内部逻辑结构图,

16、1.四位ALU,四位全加器位于图的下半部。控制端M用来选择逻辑运算或算术运算,S3S2S1S0控制各种加减运算和逻辑运算。,2.组内先行进位,片内四位为一小组,组内采用先行进位结构,它提供了组生成函数G和组传递函数P,用以形成更多位ALU的先行进位。本芯片还提供Cn+4输出,利用它可以构成组间串行进位。,3.符合比较“A=B”,SN74LS181可执行异或运算,输出,通过输出门“A=B”可获得比较结果。,74181芯片引脚图如下:,二、SN74LS181功能表(P135),注意:1(无进位),0(有进位),三、利用74LS181芯片构成16位ALU 原理,1.组间串行进位结构,2.组间先行进位

17、结构,需增加一片 74LS182芯片,用4片181和1片182构成16位ALU(算术逻辑运算单元)。,如果是64位呢?和 作为输入产生、进位,此时应为三级先行进位ALU。,2.3 定点加减运算(P125),一、补码加减运算的公式及规则,(2)补码作加减运算时它的符号位是参加运算的,符号位的进位被丢掉。,例1 求X Y=?其中 X=+1010000,Y=+0011000(1)原码运算 X 原=0,1010000 Y 原=0,0011000 因X的绝对值大于Y的绝对值,所以由X作被减数,Y作减数,差值为正。0,1010000 0,0011000 0,0111000 X Y 原=0,0111000,

18、其真值为X Y=0111000,(2)补码运算(符号位参加运算)X 补=0,1010000,Y0011000,Y 补=1,1101000 0,1010000+1,1101000 1 0,0111000 丢掉 X Y 补=0,0111000,其真值为X Y=0111000,0,1001 0,0011 0,1001 0,0011 1,0111 1,1010 0,1100 1,1010 10,0011,三、溢出判断(P129),运算结果若超出机器数的表示范围,称为溢出。溢出现象总是发生在两数运算结束之后。如果两正数之和为负数或两负数之和为正数,则其和数必为溢出数。,例1 设 X=+1100 Y=+1

19、000 求 X+Y补=?解:运算过程中符号位采用双符号位(即变形补码),X补=00,1100 Y补=00,1000 00,1100+00,1000 01,0100 X+Y补=01,0100,其中两符号出现01情况,表示溢出。本例题数值位采用四位,最多能表示正15=1111,而X=+1100=12 Y=+1000=8,12+8=20,当然超出1111的最大值,所以要溢出。,例2 设 X=1100 Y=1000 求 X+Y补=?解:运算过程中符号位采用双符号位 X补=11,0100 Y补=11,1000 11,0100+11,1000 10,1100 X+Y补=10,1100,其中两符号出现10情

20、况,表示溢出。本例题最多能表示16,而 128=20,当然超出 1,0000 的绝对值最大负数,所以溢出。,当=01 时称为 正溢(上溢),=10 时称为负溢(下溢)。溢出应对处理原则:停机,转溢出处理程序。溢出判别电路 V=,只需一个异或门即可实现。,2.4 定点乘除法运算,2.4.1 定点乘法运算,工作原理:利用常规的双操作数加法器,把n位乘转化为多次累加与移位循环实现。,包括:原码一位乘法、原码二位乘法、补码一位乘法、补码二位乘法等。,一、手算法改进,例:0.10010.1101=?0.1001 0.1101 1001 0000 1001+1001 0.01110101,改进:每乘一位后

21、就作一次加法。把原来手算法的左移改为部分积右移。,改进后0.10010.1101的运算过程为 0.1001 0.1101 1001 01001+0000 01001 001001+1001 101101 0101101+1001 1110101 01110101,原码一位乘的工作原理,二、原码一位乘法,取两数的绝对值相乘,符号位单独处理。,例 X=0.1101,Y=0.1011,求XY?,解:X00.1101,Y.1011 步数 操作 部分积A 乘数 Y 00.0000.1011 一、+X+00.1101 00.1101 00.0110 1.101 二、+X+00.1101 01.0011 0

22、0.1001 11.10 三、0+00.0000 00.1001 00.0100 111.1 四、+X+00.1101 01.0001 00.1000 1111.,再加上符号位,XY原1.10001111 XY0.10001111,原码一位乘法流程,原码一位乘的运算规则:,课堂作业:已知X=0.110,Y=0.101,求 XY=?,用原码一位乘。,解:X00.110,Y.101步数 操作 部分积A 乘数 Y 00.000.101 一、+X+00.110 00.110 00.011 0.10 二、+0+00.000 00.011 00.001 10.1 三、+X+00.110 00.111 00

23、.011 110.,再加上符号位,XY原0.011110 XY+0.011110,三、补码一位乘法(Booth算法),补码一位乘法的运算规则:,(5)按照上述算法进行n+1步操作,但第n+1步不再移位,仅根据y0与y1的比较结果作相应的运算即可。,补码一位乘法流程图,例1 X0.11010,Y=0.10111求 XY补?,解:X补11.00110,X补00.11010,Y补1.01001,步数 操作 部分积 乘数 Yn+1,00.00000 1.01001 0,一、00.11010 00.11010,00.01101 01.0100 1,二、11.00110 11.10011,11.11001

24、 101.010 0,步数 操作 部分积 乘数 Yn+1,11.11001 101.010 0,三、0 11.11001,11.11100 1101.01 0,00.01011 01101.0 1,五、11.00110 11.10001,11.11000 101101.0,六、00.11010 00.10010 10110,0.1001010110 XY0.1001010110,例2 X0.1011,Y=0.1110,求 XY补?用补码一位乘。,解:X补11.0101,X补00.1011,Y补0.1110,步数 操作 部分积 乘数 Yn+1,00.0000 0.1110 0,一、0 00.00

25、00 00.0000,00.0000 00.111 0,00.0101 100.11 1,二、00.1011 00.1011,步数 操作 部分积 乘数 Yn+1,00.0101 100.11 1,三、0 00.0101,00.0010 1100.1 1,00.0001 01100.1,四、0 00.0010,五、11.0101 11.0110 0110,1.01100110 XY0.10011010,课堂作业:X0.1010,Y=0.1001,求 XY补?用补码一位乘。,解:X补11.0110,X补00.1010,Y补0.1001,步数 操作 部分积 乘数 Yn+1,00.0000 0.100

26、1 0,一、00.1010 00.1010,00.0101 00.100 1,二、11.0110 11.1011,11.1101 100.10 0,步数 操作 部分积 乘数 Yn+1,11.1101 100.10 0,三、0 11.1101,11.1110 1100.1 0,四、00.1010 100.1000,00.0100 01100.1,五、11.0110 11.1010 0110,1.10100110 XY0.01011010,补码一位乘法逻辑电路,四、快速乘法简介,快速乘法器不再围绕双操作数的加法器进行算法研究,而是要设计出能一次进行多操作数的加法器。现在有实现多位乘的乘法器集成电路

27、芯片,例如一片实现位相乘,用若干块芯片可组成更高位数的乘法器,这种模式称为阵列乘法器。,阵列乘法器芯片包含两大部分:()用若干与门产生与操作数数位对应的多个部分积数位;()用多操作数加法网络求乘积。,例 55位无符号数相乘A=a5a4a3a2a1 B=b5b4b3b2b1,2.4.2 定点除法运算 原码不恢复余数法,手工除法:先心算被除数够不够减去除数,够减则减去除数,商上1,然后余数补0,(相当于余数左移一位);若不够减则直接补0,商上0,再作下一次比较。“先判后减”,“先减后判”:,(2)若不够减,即 2 Y0,则商上 0,,恢复余数为 Y2,下一步做 2 Y,推导:2(Y)Y2 Y,表达

28、式表明,当出现不够减情况时,不恢复余数,而直接作下一步ri+1,操作为负余数左移一位,再加上Y,其结果与恢复余数后再减Y是等效的。这就是加减交替法,即不恢复余数除法。,原码不恢复余数除法规则如下:,(1)取绝对值相除,符号位单独处理;,(2)对于定点小数除法,为使商不致溢出,要求 XY;,(5)原码除法若最后一步所得余数为负,则应恢复余数,以保持 0。,例1X原1.10110,Y原0.11101,用不恢复余数法求X原Y原Q原?,解:X00.10110,Y00.11101,符合 XY,Y补11.00011,(中途减法必须用补码),步数 操作 被除数/余数 商 说明,一、01.01100,Y 11

29、.00011 00.01111 0.00001 0,商上1,二、00.11110,Y 11.00011 00.00001 0.00011 0,商上1,步数 操作 被除数/余数 商 说明,三、00.00010,Y 11.00011 11.00101 0.00110 0,商上0,四、10.01010,Y 00.11101 11.01011 0.11000 0,商上0,五、10.01110,Y 00.11101 11.00111 0.01100 0,商上0,六、Y 00.11101 00.01000 余数为负,加Y恢复余数,Q原1.11000,余数r原0.0100025,即 商0.11000,余数0

30、.0100025,例2XY0.101100.11111?(用原码不恢复余数法),解:X00.10110,Y00.11111,符合 XY,Y补11.00001,(中途减法必须用补码),步数 操作 被除数/余数 商 说明,一、01.01100,Y 11.00001 00.01101 0.00001 0,商上1,二、00.11010,Y 11.00001 11.11011 0.00010 0,商上0,步数 操作 被除数/余数 商 说明,三、11.10110,+Y 00.11111 00.10101 0.00101 0,商上1,四、01.01010,Y 11.00001 11.10111 0.1011

31、0 0,商上0,五、00.10110,Y 11.00001 00.01011 0.01011 0,商上1,六、Y 00.11111 00.10110 余数为负,加Y恢复余数,即 商0.10110,余数0.1011025,2.5 浮点四则运算,一、浮点加减运算,设两个补码表示的浮点数A=Ma2aB=Mb2b其中Ma、Mb是规格化尾数,a、b是阶码。浮点数的加减法需要四个步骤:(1)对阶,(2)求和/差,(3)规格化,(4)舍入,1、对阶 目的就是要使两个尾数小数点对齐,阶码相等,这个操作称为对阶。,若,表示两阶相等,小数点已对齐;若,则按阶差值 来调整阶码;,对阶原则:小阶向大阶看齐。小阶阶码加

32、1,小阶的尾数向右移1位,直至ab,即两数阶码相等。,2.尾数相加减 完成小数点对齐工作后,尾数就可以进行加减操作了。尾数加减法同定点数加减法。,3.结果规格化 当运算后尾数出现11.0 xxx或00.1xx时已是规格化无需处理。当运算后尾数出现01.xxx或10.xxx时需要规格化,即右规。右规的方法是尾数连同符号位右移一位、阶码加1。尾数成为00.1xxx或11.0 xx规格化形式。当运算后尾数出现00.0 xx或11.1xx时需要规格化,即左规。左规的方法是尾数连同符号位一起左移一位,阶码减1,直到尾数部分出11.0 xx或00.1xx形式为止,4.舍入 由于尾数右移会丢失一些有效的数据

33、,计算机可按选定的方法进行舍入操作,最简单的办法是0舍1入。,例:A=56,B=26,求AB=?浮点格式为阶码5位(包含一位阶符),尾数7位包含一位符号位。,解:A=1110000.11100026 B110100.11010025,A浮0,0110 0.111000 补码表示 B浮0,0101 0.110100 补码表示,(1)对阶 小阶向大阶看齐,B的阶码向A的阶码看齐。,b0,0110,Mb0.011010 0B浮0,0110 0.011010 0,(2)尾数相减 Mb补11.100110,00.111000 11.100110 0 00.011110 0 即 MaMb00.011110

34、 0,(3)规格化,需要左规:尾数左移一位,阶码减1。AB浮0,0101 0.111100 0,(4)舍入:采取0舍1入。AB0.1111002 0,0101,二、浮点乘法运算,步骤:阶码相加 阶码相加时,阶码可能产生溢出。两个阶码在阶码加法器中采用补码加法实现。,2.尾数相乘 采用前面讨论的任何一种定点乘法运算都能实现。现代微机中 都在浮点运算部件中实现。,3.结果规格化 尾数相乘后,可能需要左规。由于尾数是定点小数,相乘后不 会出现需右规的情况。左规时阶码减1,有下溢的可能。,三、浮点除法运算,步骤:1.尾数调整 检查被除数尾数的绝对值是否小于除数尾数的绝对值,若不 是则调整被除数尾数,即尾数右移一位,阶码加1。由于原数 都是规格化的,调整一次就能保证 了。,2.阶码相减 在阶码加法器中实现阶码相减,此步不会产生溢出。,3.尾数相除 由于操作数在运算前已规格化,并且调整尾数,所以尾数相 除的结果一定是规格化定点小数。,2.6 运算器组织,一、具有多路选择器的运算器,ALU的双操作数由多路选择器选择数据源,可同时获得两路数据输入。,二、暂存器型运算器:,每次只能向ALU提供一个操作数,内部总线(双向传送),例如:R0R1R0,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号