- 1、本文档共138页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 运算方法与运算器 3.1 定点加减法运算 3.2 定点乘法运算 3.3 定点除法运算 3.4 逻辑运算 3.5 位片结构定点运算器 3.6 浮点加减法运算 3.7 浮点乘除法运算 习题 本章重点介绍运算方法、运算器的结构和工作原理。定点加减法运算、定点乘法和定点除法运算、浮点加减法运算,是计算机原理中的重要内容。 运算器的核心部件又称算术逻辑部件(Arithmetic Logical Unit),简称ALU,是计算机的数据处理中心,也是计算机内各部件传送、交换数据的枢纽。 运算器内设有一定数量的寄存器,用来存放参加运算的数据及计算过程中的中间结果。不同计算机的寄存器数目和功能有很大差异。可被程序员指定访问的寄存器,通常叫通用寄存器(General Register);另外还有一些计算机内部使用的工作寄存器,程序员是不能使用的。满足加减法要求的寄存器数目,最少必须有2个,而要完成乘除运算,则至少要3个寄存器。 计算机中加、减、乘、除运算都是转化为加法运算完成的,因此加法器是运算器的关键部件。为了提高乘除法运算速度,有些计算机还专门设置了乘法部件和除法部件,但加法器绝对不是可有可无的。 逻辑运算也是常用的操作,其硬件设置比较简单,往往是在加法器的输入端增加一些逻辑门来实现。 运算器进行算术逻辑运算时其结果的某些特征,如结果是否为零,结果是否溢出,结果的符号是正数还是负数等,对后续指令有很大影响。又比如条件转移指令,要根据转移条件,决定程序的转移方向。因此,运算器中还设置了标志寄存器(Flag Register),保存一条指令运算结果的特征。 运算器的设计与二进制数据的编码方法、数据类型、算法设计有关。本章将介绍定点运算器及浮点运算器的基本组成和工作原理。 随着大规模集成电路的发展,运算器的结构也在变化。本章将介绍AMD系列的位片结构,作为运算器的实例。 3.1 定点加减法运算 加法是所有计算机的基本运算,减法可以通过补码加法实现。乘法和除法也可通过一系列的加减法和移位实现。 3.1.1 补码加减法运算 补码的重要特征是:不管参加运算的数是正数或是负数,只要是用补码表示的,都可直接进行加减法运算,得到的运算结果也是用补码表示的。 定点数加减法规则: [x]补+[y]补=[x+y]补 [x]补-[y]补=[x]补+[-y]补=[x-y]补 也就是说:两个数和的补码就是两个数补码的和;两个数差的补码就是两个数补码的差,并且符号位与数值位一同参加运算。 1. 补码加法 已知:x,y为定点小数,其补码为[x]补,[y]补。 求证:[x]补+[y]补=[x+y]补 证:根据补码定义: [x]补= x, 0≤x1 2+x, -1≤x0 (mod 2) ?分三种情况证明: ①当x、y均为正数,其和也是正数 [x]补=x [y]补=y [x]补+[y]补=x+y=[x+y]补 ②当x、y均为负数,其和也为负数 [x]补=2+x [y]补=2+y (mod 2) [x]补+[y]补=(2+x)+(2+y)=2+(2+x+y) =2+(x+y)=[x+y]补 (mod 2) ③当x、y异号,若x0,y0, [x]补=x [y]补=2+y (mod 2) [x]补+[y]补=x+(2+y)=2+(x+y) (mod 2) 当结果为正时,|x|>|y|,x+y>0,丢掉模2,得到[x]补+[y]补=x+y=[x+y]补, 当结果为负时,|x|<|y|,(x+y)<0,根据补码定义: [x]补+[y]补=2+(x+y)=[x+y]补,根据上述各种情况说明: [x]补+[y]补=x+y=[x+y]补 因此,用补码表示的两个数做加法时,可直接让两个数相加,所得结果也是补码。当x,y为整数时结果亦真。 2. 补码减法 已知两个定点小数x,y,求x-y也可用补码方法,将减法运算换成加法,利用加法器实现减法运算。 [x-y]补=[x+(-y)]补=[x]补+[-y]补 因此,作减法时,只要把减数[y]补变成[-y]补再做加法运算,即可实现减法了。由[y]补变[-y]补的方法与原码求码的方法一样,各位变反,末位加1。需要注意:符号位也要变反。 3.1.2 溢出的产生及判别 定点数表示规定:数的符号位在代码最高位;每个数的绝对值必须小于等于其字长所能表示的最大值。如为定点小数,则每个数必须小于1。 当两个数做加减法运算时,其结果的绝对值也必须小于或等于机器数能表示的最大值。倘若结果的绝对值超过了机器数所能表示的最大值,就会溢出。溢出属于运算错误,必须及时发现、改正。那么,如何判断溢出呢? 同符号两个数相减是不会溢出的,而异号两个数相加,实质是做减法,也是不会产生溢出的。只有当同符号两个数相加时有可能产生
文档评论(0)