运算方法和运算部件

上传人:博****1 文档编号:489161482 上传时间:2023-04-26 格式:DOC 页数:38 大小:1.10MB
返回 下载 相关 举报
运算方法和运算部件_第1页
第1页 / 共38页
运算方法和运算部件_第2页
第2页 / 共38页
运算方法和运算部件_第3页
第3页 / 共38页
运算方法和运算部件_第4页
第4页 / 共38页
运算方法和运算部件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《运算方法和运算部件》由会员分享,可在线阅读,更多相关《运算方法和运算部件(38页珍藏版)》请在金锄头文库上搜索。

1、第3章运算方法和运算部件在计算机中,完成数值运算的部件就是CPU中的算术逻辑运算单元ALU( ArithmeticLogical Unit )。ALU的逻辑结构取决于机器的指令系统、数据的表示方法、运算方法和 选用的逻辑器件等。数据的表示方法在第二章中已经讲解,指令系统的内容将在第五章介 绍,本章重点介绍运算方法、运算器的结构和工作原理。对运算方法的讨论主要是指:算术运算在计算机中是按什么规则进行的。对不同的机 器数表示形式所对应的算法也不同。此外,由于计算机中的数有定点和浮点表示,因此相 应的有定点数运算和浮点数的运算方法。计算机中的加、减、乘、除基本算术运算通常都是转化为加法运算完成的,因

2、此加法 器是构成运算器的关键部件。为了提高乘除法运算速度,有的计算机还专门设置了乘法部 件和除法部件,但加法器绝对不是可有可无的。在运算器内部,除了加法器以外,还设有 一定数量的寄存器,用来存放参加运算的数据及运算过程中的中间结果。不同计算机的寄 存器数目和功能都有所不同。满足加、减法运算要求的寄存器数目一般最少要有两个,而 要完成乘、除法运算,则一般至少要有三个寄存器。可被程序员指定访问的寄存器通常叫 做通用寄存器(General Register );此外还有一些工作寄存器,例如状态标志寄存器(Flag Register ),主要用以保存一条指令执行后运算结果的特征。逻辑运算也是计算机中常

3、用的操作,其硬件设置比较简单,通常是在加法器的输入端 增加相应的逻辑门来实现。随着大规模集成电路的发展,运算器的结构也在不断地变化。本章将以4位片的ALUSN 74181为例子,介绍ALU的结构和原理。3-1算术逻辑运算基础3-1-1定点数的加减法运算加法运算是所有计算机的基本运算,减法运算可以通过补码加法来实现。而乘法和除 法运算也可以通过一系列的加减法运算和移位来实现。我们通过第二章的学习已知:在计 算机内部,带符号数通常都是用补码来表示的,这当然是由补码的特点决定的。因此,在 讨论加减法运算时,我们主要介绍补码的加、减法运算方法。1 补码加法运算两个参与相加的数无论是正数还是负数,在进行

4、相加运算时,只要将两个数表示成对 应的补码形式,再将这两个补码直接按二进制运算规则相加,所得的结果就是和的补码形 式。即两个数补码的和等于两个数和的补码。可用如下关系式描述:凶补 + Y补=X + Y补(3 -1)下面根据补码的定义对上式加以证明。证明:设X、Y为定点整数。根据它们真值的符号,分成下列几种情况讨论。(1) X0 , Y0根据补码的定义可得:凶补=X , Y补=Y/ X + Y 0 X补+ Y补=X + Y = X + Y补(2) X0 , Y0根据补码的定义可得:X补=X , Y补=M + Y X补+ Y补=M + X + Y/ X、Y为定点整数 M=2 n+1,2 n=M/2

5、 贝U(a) 当 OWX + YVM/2 时X补 + Y补=M + X + Y = X + Y=:X + Y补(b) 当 一M/2WX + YV 0时X补 + Y补=M + X + Y =X + Y补(3) X0与(2)的情况相同,只须将(2)中X和Y对调即可。(4) XVO,YVO根据补码的定义可得:凶补=皿+ X, Y补=M + Y X补+ Y补=M + X + M+ Y = M+(M+X + Y) 对M取模后可舍去M X补+ Y补=M + X + Y =X + Y补综上所述,X补+ Y补=X + Y补。这是补码加法的理论基础, 小数。例1 X = + 1001, Y = + 0101,

6、求 X + Y。解:X 补=01001, Y 补=00101(mod M )(mod M)(mod M)(mod M)(mod M)其结论也适用定点0100100101所以X + Y = + 1110例 2 X = + 0.1011, Y = - 0.0101, 求 X + YX 补=0.1011,Y 补=1.1011所以0.10111.1011X + Y= 0.0110X + Y 补 01110由以上两例可见,补码加法的特点:一是符号位要作为数的一部分一起参加运算,二是要在模M的意义下相加,即超过M的进位要丢掉。例1中的模为( 1 0 0 0 0 0 )2 ,例2中的模为(10)2 ,而字长

7、均为5位。2. 补码减法运算两个异号数的相加是利用它们的补码将减法变成了加法来做,减法运算当然也可以转 化成加法来完成。之所以使用这种方法而不用直接减法,是因为这样可以和常规的加法运 算使用同一加法器电路,从而简化了计算机硬件电路的设计。根据式(3 1)可得:X Y补=X+( Y) 补=X补 + Y补(3 -2)若使上式等于X补一Y补,则只需要证明Y 补=Y补即可。证明:T X + Y 补=X 补+ Y 补二Y 补=X + Y 补一X 补(3 - 3 a)又 X Y 补=X 补+ Y 补二Y 补=X Y 补一X 补(3 - 3 b)将式(33 a)与(33 b)相加,得Y 补+ Y 补=X +

8、 Y 补 + X Y 补一X 补一X 补=X + Y + X Y 补一X 补一X 补=X + X 补一X 补一X 补=0故Y 补=Y 补由于在存储器单元或寄存器中保存的通常是Y补,因此要将减法运算转化为加法运算,就需要将Y补变为Y补, Y补称为Y补的机器负数。如何根据Y补来求Y补呢?下面以定点小数为例说明由Y 补求Y补的方法。此 法当然也可以推广到定点整数。分两种情况来讨论:(1) 1Y0丫补=0 .丫1丫2丫3 Yn=Y根据补码的定义,得:卜丫补二 2 (-Y )=2 - 0 .丫1丫2丫3 丫= 1.111 1 2* -0 丫2丫3 Yn=1.丫1丫2丫3 Vn 2 =(2) 0Y1若丫补

9、丫1丫2丫3Yn注意:现在的 丫“2丫3Yn是补码的尾数,而非真值。 根据补码的定义有:丫补二2 Y Y=Y补-2=(2 -1.丫1丫2丫3Yn)-一(1.1111 2-1. Y1Y2Y3 Yn)-(0.丫1丫2丫3 Yn 2)一丫 =0.丫1丫2丫3 Yn 2由于-丫0 ,则根据补码的定义,得:-丫补二 0.丫1丫2丫3Yn 2可见,不管Y的真值为正还是为负,根据Y 补求Y 补的法则是:对Y 补连同符号位一起“求反且最末位加1” (在定点小数中的这个“1”为2 n),即得到Y 补。例 3已知 X=+ 0.1110,Y = 0.1101,求:X补,X补,Y补,Y2补。解:X补=0.1110X补

10、=1.0001+0.0001=1.0010Y补=1.0011Y补=0.1100+0.0001=0.1101在求得Y补后,将其与X补相加,便得出X Y补。例 4 X =+ 0.1101,Y =+ 0.0110,求 X Y。解:凶补=0.1101Y补=0.0110,Y补=1.10100.1101+ Y补1.1010X Y补丢掉所以X Y=+ 0.0111根据以上的讨论,可将补码加减法运算规则归纳如下:CD参加运算的操作数用补码表示。 符号位与数值位一样参加运算 若为加法操作,则两数直接相加;若为减法操作,则减数连同符号为一起变反加 后再与被减数相加。运算的结果仍然是补码的形式。例 5已知 X= +

11、 110110 Y= 110011,求X + Y 补,X-Y 补。 解:取8位字长,则X 补=00110110 , Y 补=11001101 , - Y 补=00110011X 补 00110110+ Y补 11001101X + Y 补 00000011/丢掉所以X + Y 补 =00000011X 补 00110110+ Y 补 00110011X Y 补 01101001 所以 X Y 补=011010013-1-2溢出及其判别方法由于CPU的字长是一定的,在确定了运算字长和数据的表示方法后,所能表示的数 的范围也就相应确定了。当运算结果超出了机器数所能表示的范围,就会产生溢出。例 如,

12、某CPU的字长为8位,若采用补码表示,则定点整数的表示范围为128+ 127,如果运算结果超出了这个范围,即产生了溢出。由于发生溢出会导致运算结果错误,因此 计算机必须能够判断完成某一运算之后所得的结果是否发生了溢出,若溢出则停机,或转 入中断服务程序进行处理。显然,两个异号数相加或两个同号数相减其运算结果是不会产生溢出的,只有两个同 号数相加或两个异号数相减才可能发生溢出。运算结果为正且大于所能表示的最大正数, 称为正溢”;运算结果为负且小于所能表示的最小负数,称为负溢”。如何判别运算结果是否发生了溢出呢?我们可以通过以下几个例子来推导出发生溢出 的条件。设字长为 8位,用补码表示,则表示数

13、的范围为128+ 127,如果运算结果超出此范围则发生了溢出。(a) 31+13=440, 0011111+ 0, 00011010, 0101100结果正确。(b) 63+66=1290, 0111111+ 0, 10000101, 0000001两个正数相加,结果为负,错误。(c) (-31 ) + (-13 ) =-441, 1100001+1, 1110011V丢掉虽然最高位丢掉,但结果正确。(d) ( -63 ) + (-66 ) =-1291 , 1000001+ 1 , 0111110却丢掉最高位丢掉,但两个负数相加,结果却为正数,错误。通过上述例子分析,可归纳出判断发生溢出的方

14、法。1 根据符号位判断从上述例子(b)、( d)可以看出:两个正数相加,结果却为负数,则表明发生了溢 出;两个负数相加,结果却为正数,则也表明发生了溢出。因此可得出利用符号位判断溢 出的方法:当两个同号数相加,若所得结果的符号与两个操作数的符号不同,则表明溢出。分别用 Xn、Yn、Sn表示两个操作数的符号和运算结果的符号,则发生溢出的条件为:溢出=XnYnSn XnYnSn2. 根据进位位判断从上述例子(b)中可以看出:两个正数相加导致结果为负数的原因是由于在运算过程 中,数值位向符号位发生了进位。而在例子(d)中,两个负数相加导致结果为正数的原因是由于在运算过程中,符号为向更高位(丢掉位)发生了进位。在例子(a)中没有发生这样的进位,因此没有发生溢出。在例子(c )中,这两种进位同时发生了,结果

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号