计算机组成与结构课件 第2章 运算方法与运算器_第1页
计算机组成与结构课件 第2章 运算方法与运算器_第2页
计算机组成与结构课件 第2章 运算方法与运算器_第3页
计算机组成与结构课件 第2章 运算方法与运算器_第4页
计算机组成与结构课件 第2章 运算方法与运算器_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

第2章运算方法与运算器第2章运算方法与运算器主要内容:2.1计算机中的数据表示2.2定点数加、减法运算 2.3定点数乘、除法运算2.4浮点运算介绍2.5运算器的组成与结构2.1数据信息的表示方法2.1.1计算机中的常用数制(略)2.1.2非数值型数据的表示(略) 2.1.3带符号数的表示 2.1.4定点数与浮点数 2.1.3带符号数的表示机器数——在机器内使用的,连同正、负号一起数字化的数。1.原码

规则:二进制数的最高位为符号位,正数的符号位为0,负数的符号位为1,其余位为数的绝对值。定点小数的原码定义定点整数的原码定义0的原码表示:[+0]原=00000000,[-0]原=10000000原码举例例:若机器字长n=8

[+35]原=(00100011)2

[-35]原=27-(-35)=(10000000)2+(00100011)2=(10100011)2

[+0.8125]原=(0.1101000)2

[-0.8125]原=1-(-0.8125)=(1.0000000)2+(0.1101000)2=(1.1101000)2练习:求[±97]原课堂练习设字长n=8,根据原码的定义分别求:[+97]原、[-97]原、[+0.97]原、[-0.97]原2.反码

规则:正数的反码与原码相同;负数的反码的符号位为1,其余位与原码逐位相反。 定点小数反码定义: 定点整数反码定义:反码举例例:设机器字长n=8[+35]反=(00100011)2[-35]反=(28-1)+(-35)=(11111111)2-(00100011)2=(11011100)2[+0.8125]反=(0.1101000)2[-0.8125]反=(2-2-7)+(-0.8125)=(1.1111111)2-(0.1101000)2=(1.0010111)2

课堂练习设字长n=8,根据反码的定义分别求:[+97]反、[-97]反、[+0.97]反、[-0.97]反3.补码(1)为什么要引用补码?目的是让符号位也作为数值的一部份直接参与运算,以简化加、减运算的规则;同时又能化减为加。(2)补码表示法的思想来源来源于时钟计时,例如:-2时和10时。时钟计时的前提是以12为模,在这种有模运算中,一个负数可以用一个与之互补的正数来代替如11=12+(-1)互补正数模负数(3)补码的定义:[X]补=M+X(ModM)[X]补=XX≥0[X]补=M+X=M-|X|X<0其中模数M根据机器数的位数而定,如定点整数,位数为N则M=2N;又如定点小数,则M=2.用补码表示的机器数,符号位仍然表示数的符号:0为正,1为负。对于正数,补码与原码相同,对于负数需要进行变换。补码举例例:设机器字长为8位[-35]补=28+(-35)=(100000000)2-(00100011)2=(11011101)2

[-0.8125]补=2+(-0.8125)=(10.0000000)2-(0.1101000)2

=(1.0011000)2[X]补=M+X=M-|X|X<0[X]补=XX≥0整数时M=2n,小数时M=2课堂练习设字长n=8,根据补码的定义分别求:[+93]补、[-93]补、[+0.93]补、[-0.93]补[X]补=M+X=M-|X|X<0[X]补=XX≥0整数时M=2n,小数时M=2(4)真值、原码变换为补码的方法正数的原码与补码相同;负数的原码变换为补码:保持符号位不变,其余各位变反,最低位加1。例将-59变换为补码所以[-59]补=11000101原码10111011变反11000100加111000101思考:补码如何转换为原码?2.1.4定点数与浮点数1.数的定点表示2.数的浮点表示1.定点表示法无符号定点整数:有符号定点整数:带符号定点小数:

每一位均表示数的大小必须使用最高位来表示“±”号X0.X1X2…Xn,其中X0为符号位注意:在机器中,小数点是不存在的。例如:字长为8位时,Max=11111111,Min=00000000例如:字长为8位时,Max=01111111,Min=10000000例如:字长为8位时,-0.5=1.1000000,0.25=0.0100000注意事项定点数必须在指定范围之内,否则会发生溢出。若数据小于定点数所能表示的最小值时,计算机将其作“0”处理,称为下溢。若数据大于定点数能表示的最大值时,计算机将无法表示,称为上溢。当有溢出发生时,CPU中的状态寄存器PSW中的溢出标志位将设置为1,并进行溢出处理。2.浮点数表示浮点数——数的小数点位置不固定。例如:N=1110.011=0.1110011×2+100B

=0.01110011×2+101B浮点数的一般形式:N=(-1)s×m×2e,其中,s为符号位,纯小数m是尾数,表示数的精度;整数e是阶码,表示数的范围;2e为比例因子。IEEE754标准浮点型格式(Float型)阶符S0……2223……3031阶码E尾码M规格化浮点数非规格化浮点数2.2定点数加、减运算2.2.1补码加减运算方法 2.2.2溢出判断与移位 2.2.1补码加减运算方法采用补码进行加减运算,操作数和结果均用补码表示。运算时所依据的基本关系如下:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补

求[-Y]补的方法:将[Y]补的各位(包括符号位)逐位取反再在最低位加1即可求得[-Y]补

1.加法运算:[X+Y]补例1:X=74DY=-41D,求[X+Y]补[X]补=01001010[Y]补=110101110100101011010111+001000011自动舍去所以[X]补+[Y]补=[00100001]补=33D补码加减运算举例 练习:设X=-74D,Y=-41D,求[X+Y]补例2X=74DY=-41D,求[X-Y]补[X]补=01001010[Y]补=11010111[-Y]补=001010010100101000101001+011100111自动舍去故[X]补-[Y]补=[X]补+[-Y]补=01110011=[115]补2.减法运算:[X-Y]补=[X]补+[-Y]补练习:设X=-74D,Y=-41D,求[X-Y]补2.2.2溢出判断与移位1.溢出判断方法 2.移位操作 3.舍入处理 1.溢出判断方法溢出:运算结果超出机器数所能表示的范围。正溢:当正数与正数相加或正数与负数相减时,绝对值超出机器允许表示的范围。负溢:当负数与负数相加或负数与正数相减时,绝对值超出机器允许表示的范围。例如:设字长为5,含1位数符,则:负溢(2)A=-10B=-7-10+(-7):011111011011001(1)A=10B=710+7:010100011110001正溢结论:若SA、SB、Sf分别表示A、B、结果的符号,则:"溢出"=SASBSf+SASBSf根据符号位判断例如:(1)A=10B=710+7:01010001110

10001正溢负溢(2)A=-10B=-7-10+(-7):1

011111011011001结论:若Cf为符号位运算后产生的进位,C为最高有效数位产生的进位,则:

"溢出"=Cf+C根据符号位产生的进位和最高有效数位产生的进位判断根据双符号位来判断(变形补码判断)例如:(1)A=10B=710+7:001010000111010001正溢负溢(2)A=-10B=-7-10+(-7):101111110110111001结论:用Sf1、Sf2分别表示第一、二符号位,则:

"溢出"=Sf1+Sf2课堂练习设字长为5位,数值位为4位,请用三种方法判断是否有溢出:(1)已知A补=0.1100,B补=1.0010,计算A补+B补。(2)已知A补=1.1100,B补=1.0010,计算A补+B补。2.移位操作移位的意义根据移位的性质,可分为:逻辑移位:算术移位:循环移位:根据移位的方向,可分为:左移右移逻辑移位将移位对象看作没有数值含义的一组二进制代码。在逻辑左移时,在最低位的空位添“0”;在逻辑右移时,在最高位的空位添“0”。10001111示例:左移000

11110应用:用于串并转换、位判断或位修改实现方法:寄存器内移位、寄存器间斜位传送算术移位数字代码具有数值意义,且带有符号位,操作过程中保证符号位不变。带符号数的移位规则表正数码制添补规则(符号位不变)负数码制添补规则(符号位不变)原码空位均添“0”原码空位添“0”补码空位均添“0”补码左移添“0”,右移添“1”反码空位均添“0”反码空位添“1”(1)单符号位:00111(7)01110(14)(2)双符号位:001110

000111正数补码算术移位规则移位规则左移右移右移0

0110(6)0

0011(3)左移左移右移右移011100

001110000111

数符不变、空位补0

注意,对一双符号数,要确保第一符号位不变01100(12)左移(1)单符号位:11011(-5)10110(-10)(2)双符号位:101100(-4)110110(-10)负数补码算术移位规则移位规则左移右移右移1

1011(-5)11101(-3)左移右移右移110110(-10)11

1011(-5)

数符位不变、左移空位补0、右移空位补1注意:对于双符号数,要确保第一符号位不变

循环移位进位进位进位进位(a)小循环左移(b)小循环右移(c)大循环左移(d)大循环右移循环移位示意图课堂练习已知字长为5,请分别采用单符号位和双符号位将以下数值进行算术左移和算术右移,并思考如何判定是否发生溢出。13、-13、0.85、-0.853.舍入处理1.“0舍1入”法 与十进制中的“四舍五入”类似:若第n+1位是“0”,则直接舍去;若第n+1位是“1”,则舍去第n+1位,并在第n位做加“1”修正。

2.末位恒置“1”法 舍去第n+1位,并将第n位恒置“1”。2.3定点数乘、除法运算2.3.1原码一位乘 2.3.2补码一位乘 2.3.3原码一位除2.3.4补码一位除(略)2.3.1原码一位乘法1.手工计算2.分步乘法(自动计算)3.算法流程0.1101×0.101111011101000011010.10001111上符号:1.10001111部分积1.手工计算例如:设X=0.1101,Y=-0.1011,求XY=?2.分步乘法(自动计算)基本技巧:每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。例如:设X=0.1101,Y=-0.1011,求XY=?首先设置三个寄存器A、B、C,开始时:A=00.0000B=|X|=00.1101C=|Y|=.1011

问题:将多个位积一次相加,机器难以实现;最后乘积的位数随着乘数位数的增多而增多;计算机中的加法器每次只能完成两个数的加操作步数条件操作AC00.0000.1011

1)Cn=1+BCn+00.110100.110100.01101.1012)Cn=1+B+00.110101.001100.100111.103)Cn=0+0+00.000000.100100.0100111.14)Cn=1+B+00.110101.000100.100011113.算法流程开始0→A,|X|→B,|Y|→C,0→CRCn=1?(A)+(B)→A(A)+0→A(A,C)右移一位Cn=n?SX⊕SY→SA,(SA,A,C)即为结果结束YNNY课堂练习设字长为6(符号位可达2位),已知X=3,Y=-4,求[XY]原

2.3.2补码一位乘法1.算法分析2.Booth算法(比较法算法)3.运算实例4.运算规则1.算法分析X补

=X0.X1X2……Xn,Y补

=Y0.Y1Y2……Yn(1)Y>0时:Y补

=0.Y1Y2……Yn(XY)补

=X补(0.Y1Y2……Yn)(2)Y<0时:Y补

=1.Y1Y2……Yn,

因Y补=2+Y,Y=Y补-2=1.Y1Y2……Yn-2=0.Y1Y2……Yn-1

故(XY)补

=X补(0.Y1Y2……Yn)-X补(3)Y符号任意:

(XY)补

=X补(0.Y1Y2……Yn)-X补Y0(4)展开为部分积的累加和形式(XY)补

=X补(0.Y1Y2……Yn)-X补Y0=X补(-Y0+2-1Y1+2-2Y2+2-3Y3+…+2-nYn)=X补[-Y0+(Y1-2-1Y1)+(2-1Y2-2-2Y2)+(2-2Y3-2-3Y3)+…+(2-(n-1)Yn-2-nYn)+0]=X补[(Y1-Y0)+2-1(Y2-Y1)+2-2(Y3-Y2)+…+2-(n-1)(Yn-Yn-1)+2-n(0-Yn)]

若采用分步计算,设[A0]补=0为初始部分积,[A1]补……[An]补依次为每一步所得部分积,则:

[A1]补=2-1([A0]补+(Yn+1-Yn)[X]补)[A2]补=2-1([A1]补+(Yn-Yn-1)[X]补)……[An]补=2-1([An-1]补+(Y2-Y1)[X]补)(XY)补=[An]补

+(Y1-Y0)[X]补

(Yn+1-Yn)]增设附加位Yn+1=0可见,每一步计算只需比较乘数的相邻两位数之差即可决定是+X补、还是-X补或+0。因此,这种计算乘积的方法称为比较法。

2.比较法算法YnYn+1Yn+1-Yn操作(A补为部分积累加和)00011011

1/2A补

1/2(A补+X补)1/2(A补-X补)1/2A补01-103.运算实例X=-0.1101,Y=0.1011,求(XY)补。初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101,C=Y补=0.1011分步计算过程:步骤条件操作部分积A乘数CC-n附加位C-(n+1)说明初始值C-nC-(n+1)00.00000.10110第一步10-B+00.1101部分积+[-X]补右移一位00.1101→00.011010.101

1第二步11+0+00.0000部分积+0右移一位00.0110→00.0011010.10

1第三步01+B+11.0011部分积+[X]补右移一位11.0110→11.10110010.1

0第四步10-B+00.1101部分积+[-X]补右移一位00.1000→00.010000010.1第五步01+B+11.0011部分积+[X]补不移位11.01110001(1)A、B取双符号位,符号参加运算;(2)C取单符号位,符号参加移位,以决定最后是否修正;(3)C末位设置附加位Cn+1,初值为0,CnCn+1组成判断位,决定运算操作;(4)做n+1步操作,其中n步循环,最后一步不移位。

4.运算规则拓展:原码两位乘法1.两位乘数四种可能的组合及解决思路+2|X|的实现:被乘数|X|左移1位,再加部份积+3|X|的实现:+3|X|=-|X|+4|X|,故:先执行-|X|,之后部份积右移两位再加|X|可放到下次操作时执行。实现时使用触发器Cj来记录是否欠下+4|X|,若欠下则Cj置1,否则置0原码两位乘法的实际操作2.原码两位乘法的运算规则两个乘数的符号位不参加运算,最后将两个乘数的符号位相异或即可得到乘积的符号。由于运算中有+2|X|的操作,与部分积累加后可能会产生向第二符号位的进位,所以部分积与被乘数应该设三位符号位,以保证每次累加所产生的进位及最高符号位的可靠性;在乘数末位增加一位初始值为“0”的Cj。。按照上表相关步骤进行操作。若乘数的位数n为奇数时,采用单符号位,每步处理两位,恰好做(n+1)/2步,由于最后一步只含一位数值位,所以最后一步只右移一位;若n为偶数时,采用双符号位,每步处理两位,做(n/2)+1步,最后一步不移位。原码两位乘法举例已知X=-87,Y=97,求[XY]原设A=000.0000000B=|X|=000.1010111C=|Y|=0.1100001–B=-|X|=111.0101001,+2B=+2|X|=001.0101110步骤条件操作部分积A乘数CCjS0000.00000000.11000010S1010+B2+000.1010111000.1010111000.0010101110.110000S20002000.000010101110.1100S3100+2B2+001.0101110001.0110011000.01011001101110.10S4010+B1+000.1010111001.0000011000.100000111101110.0[XY]原=-10000011110111=-84392.3.3原码一位除1.手工计算2.原码恢得余数法(略)3.原码不恢复余数法(略)——又称

加减交替法例.0.10110÷0.111110.1011011010.01111110.11111000111111101010111111101100.00000.0.商:0.10110余数:0.10110×25实现除法的关键:比较余数和除数的绝对值大小,以决定上商。1.手工计算机器执行除法计算的实现(1)机器计算的关键问题关键是如何判断够减。(2)如何判断够减——用减法试探余数×2-除数=新余数(3)不够减时如何处理先求新余数,再判断。若新余数为正,表示够减,商1;否则,表示不够减,商0,恢复原余数。(1)只计算|X|÷|Y|,符号位单独处理,但A和B必须设双符号位,同时要求|X|<|Y|(3)最后一步所得余数若为负,则必须恢复余数(即执行ri+|Y|)。2.原码恢得余数法(2)分步计算时,先判断余数ri的符号,如果为正表示够减,上商Qi=1同时执行2ri-|Y|;否则上商Qi=0同时执行2ri+|Y|。原码恢得余数法运算规则案例演示【例2-18】已知X=-0.1011,Y=-0.1101,求[X÷Y]原解:[X]原=1.1011,[Y]原=1.1101,设A=|X|=00.1011,B=|Y|=00.1101,-|Y|=11.0011,C=|Q|=0.0000计算过程见P38页3.原码不恢复余数法(1)原码恢复余数法的分析:

当余数r>0时,商“1”,再将r左移一位后减去除数|Y|,即2r-|Y|。

当余数r<0时,商“0”,此时要先恢复余数(r+|Y|),然后将恢复后的余数再左移一位减去除数|Y|,即2(r+|Y|)-|Y|=2r+|Y|。可见,当r>0时,商“1”并做2r-|Y|;当r<0时,商“0”并2r+|Y|,这完全不需要再回复余数,故将这种方法称为“加减交替法”或“不恢复余数法”,(2)原码不恢复余数法的运算规则:符号位不参加运算,对于定点小数要求|被除数|<|除数|。可将被除数当做初始余数,当余数r>0时,商上“1”,余数左移一位,再减去除数;当余数r<0时,商上“0”,余数左移一位,再加上除数。求n位商时(不含商符),需要做n次“左移、加/减”操作。若第n步余数为负时,则需要增加一步——加上除数恢复余数,使得最终的余数仍为绝对值形式,注意最后增加的一步不需要移位,最后的余数为r×2-4(与被除数同号)。案例演示【例2-19】已知X=-0.1011,Y=0.1101,用加减交替法求[X÷Y]原。解:[X]原=1.1011,[Y]原=1.1101,

设A=|X|=00.1011,B=|Y|=00.1101,-|Y|=11.0011,C=|Q|=0.0000。计算过程见39页2.5定点运算器的设计与组织2.5.1加法器 2.5.2算术逻辑单元 2.5.3定点运算器 2.5.4浮点运算器(略) 2.5.1加法器

1.加法单元的设计加法单元——实现加法运算的逻辑电路。半加——相加时,只考虑本位的相加,而不考虑低位来的进位。全加——相加时,除了考虑本位的相加外,还要考虑低位来的进位。FAAiSiCiBiCi-1HAAiBiSiCi半加器逻辑符号全加器逻辑符号全加器的输入/输出加法单元i本位操作数AiBi低位进位Ci-1本位Ci进位∑i本位和AiBiCi-1∑iCi0000001010100101100100110011011010111111思考:输入与输出之间有何关系?一般由与或门、与或非门、异或门组成(1)无低位进位时,两个输入相异时本位和为1,相同时为0;有低位进位时,反之.(2)当两个输入相同时,本位进位不受有关低位进位的影响.(3)当两个输入相异时,低位进位决定本位进位(即有低位进位就有本位进位)AiBiCi-1∑iCi0000001010100101100100110011011010111111

输入与输出的关系

运算逻辑(原变量输入)∑i

=(Ai⊕Bi)⊕Ci-1Ci=AiBi+(Ai⊕Bi)Ci-1AiBiCi-1∑iCi0000001010100101100100110011011010111111=1&Ai∑iCiBiCi-1&≥1=12.进位链的设计进位链的基本逻辑关系Ci=AiBi+(Ai⊕Bi)Ci-1=AiBi+(Ai⊕Bi)Ci-1=AiBi+(Ai+Bi)Ci-1令Gi=AiBi,Pi=Ai⊕Bi=Ai⊕Bi=Ai+Bi,则Ci=Gi+PiCi-1进位产生函数传送进位或条件进位进位链的设计串行进位加法器优点:电路简单缺点:速度慢FA3C0FA2FA1FA0C-1C1C2C3S0S1S2S3B0B1B2B3A0A1A2A32.进位链的设计

并行进位加法器 可以根据输入信号同时形成各位向高位的进位,而不必逐级传递进位信号,又被称为先行进位加法器、超前进位加法器。

例如:4位二进制数相加时,产生的进位表达式如下:进位链的设计2.进位链的设计分级、分组进位加法器(1)组内并行、组间串行的进位链第四组第二组第一组第三组B3~B0,A3~A0B7~B4,A7~A4B11~B8,A11~A8B15~B12,A15~A12C3C2C1C0C7C6C5C4C11C10C9C8C15C14C13C12C-1进位链的设计组内并行、组间并行的进位链第二级进位链第四组第二组第一组第三组B3~B0,A3~A0B7~B4,A7~A4B11~B8,A11~A8B15~B12,A15~A12

C2C1C0

C6C5C4

C10C9C8

C14C13

温馨提示

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

评论

0/150

提交评论