计算机组成原理 第2版 课件 第三章 运算方法和运算部件_第1页
计算机组成原理 第2版 课件 第三章 运算方法和运算部件_第2页
计算机组成原理 第2版 课件 第三章 运算方法和运算部件_第3页
计算机组成原理 第2版 课件 第三章 运算方法和运算部件_第4页
计算机组成原理 第2版 课件 第三章 运算方法和运算部件_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理01算术逻辑运算基础

第三章运算方法和运算部件02定点数的加法和减法运算03算术逻辑运算单元04定点数的乘法和除法运算05浮点数运算算术逻辑运算基础01逻辑移位移位运算循环移位算术移位特点移位操作对象不存在符号和量值的差别,非数值或无符号数仅限于数码位置的变化规则左移或右移时高位或低位补0移出位被丢弃举例:逻辑右移:0101->0010逻辑移位移位操作对象不存在符号和量值的差别,非数值或无符号数仅限于数码位置的变化左移时最高位移到最低位,其余各位依次左移。移出位被置于低位或高位例如:循环右移:0101->1010循环移位移位时,数的符号位不变,数值发生变化。算术运算数的移位操作会引起数值变化右移一位,相当于带符号的数除以2(乘以1/2)左移一位,相当于带符号的数乘以2对于正数原码、反码和补码均相同,移位时只需要在末端补“0”。对于负数的移位,不同码制的处理不同算术移位特点移位操作对象存在符号和量值的差别,即:有符号数不仅限于数码位置的变化,内涵是数值扩大或缩小两倍算术移位符号位保持不变左移:仅移动量值位,低位补0右移:仅移动量值位,高位补0原码算术移位原码算术移位符号位不参与移位,只是绝对值移位,其末端补入0例:算术右移运算A1A2A3A4A5A6A7A8

1A的始值

补0

丢失

1结果例:算术左移运算

A1

A2A3A4A5A6A7A8

1A的始值

丢失

补0

0结果原码算术移位规则1.符号位参与移位2.左移:低位补03.右移:高位补原有符号位溢出左移、符号位发生改变

问题:算术移位怎样才能保持正确的符号和正确的移位值?补码算术移位补码右移例:设x=-1011000,则[x]补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下:不移位

x=-1011000 [x]补=10101000右移一位

½x=-0101100 [½x]补=11010100右移二位

¼x=-0010110 [¼x]补=11101010补码右移:符号位也随之右移且符号位不变例:A1A2A3A4A5A6A7A810101000A的始值

丢失

1

1010100结果符号位不变补码左移例:设x=-0010110,则[x]补=11101010,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下:不移位

x=-0010110 [x]补=11101010左移一位

2x=-0101100 [2x]补=11010100左移二位

4x=-1011000 [4x]补=10101000补码左移左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位A1A2A3A4A5A6A7A81

0A的始值丢失

补00

0结果产生错误已知[x]补=0.1011,[y]补=1.1011,求算术左移,逻辑左移、算术右移、逻辑右移后的值。x算术左移后的值=1.0110(溢出)y算术左移后的值=1.0110x逻辑左移后的值=1.0110y逻辑左移后的值=1.0110x算术右移后的值=0.0101y算术右移后的值=1.1101x逻辑右移后的值=0.0101y逻辑右移后的值=0.1101补码移位举例反码右移:符号位也随之右移且符号位不变A1A2A3A4A5A6A7A810101000A的始值

丢失

1

1010100结果符号位不变反码算术移位反码左移左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围为了保持正确符号,往往采用具有两位或多位符号位的变形码A1A2A3A4A5A6A7A81

0A的始值丢失

补10

1结果产生错误1/0表示真或假,位运算与运算:&,有0即0或运算:|,有1即1非运算:~,0-1,1-0异或运算:^,同0异1基本逻辑运算02定点数的加法和减法运算计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU计算机的运算可以分为数值运算和非数值运算数值运算的基础是定点与浮点,其中以加法为核心一、补码加减运算计算机中,常用补码进行加减运算。补码可将减法变加法进行运算。补码运算特点:符号位与数值位一同运算。运算的基本规则:

[X]补+[Y]补

=[X+Y]补

[X-Y]补=[X]补-[Y]补

=[X]补+[-Y]补

由[Y]补求得[-Y]补

的方法:对[Y]补(包含符号位)求反且末位加1。定点数的加减运算

1.[X]补+[Y]补

=2·X0+X+2·Y0+Y=2(X0+Y0)+(X+Y)(1)若X0Y0=00,则[X]补+[Y]补

=X+Y=[X+Y]补;(2)若X0Y0=01或10,则[X]补+[Y]补=2+(X+Y)当X+Y>0时,2+(X+Y)>2,进位丢失,得:

[X]补+[Y]补

=X+Y=[X+Y]补;当X+Y<0时,[X]补+[Y]补=2+(X+Y)=[X+Y]补;(3)若X0Y0=11,则[X]补+[Y]补

=4+(X+Y)

=2+[2+(X+Y)]∵0>X+Y≥-1,∴2>2+(X+Y)≥1此时,[X]补+[Y]补

=2+(X+Y)=[X+Y]补(2自然丢失)在模2下,设[X]补=X0X1X2

…Xn,

[Y]补=Y0Y1Y2

…Yn

则[X]补=2·X0+X,

[Y]补=2·Y0+Y证明:2、

∵[X]补+[Y]补

=[X+Y]补∴[Y]补

=[X+Y]补-[X]补……①

又∵[X-Y]补=[X+(-Y)]补

=[X]补+[-Y]补

∴[-Y]补

=[X-Y]补-[X]补……②①+②得:[Y]补

+[-Y]补

=[X+Y]补-[X]补+[X-Y]补-[X]补

=[X+Y+X-Y]补-[X]补-[X]补=[X+X]补-[X]补-[X]补=0∴[-Y]补

=-[Y]补

[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补

例1:已知机器字长n=8,X=44,Y=53

求X+Y=?解:[X]原=00101100,[Y]原=00110101[X]补=00101100,[Y]补=00110101[X]补=00101100+[Y]补=00110101[X+Y]补=01100001真值:X+Y=(+1100001)2=+97例2:已知机器字长n=8,X=-44,Y=-53

求X+Y=?解:[44]补=00101100,[53]补=00110101 [X]补=[-44]补=11010011+1=11010100,

[Y]补=[-53]补=11001010+1=11001011 [X]补=11010100 +[Y]补=11001011 [X+Y]补=110011111

超出8位,舍弃模值

X+Y=(-1100001)2=-97例3:已知机器字长n=8,X=0.1101,Y=0.0110,

求X-Y=?解:[X]补=0.1101000,[Y]补=0.0110000,

[-Y]补=1.1010000[X]补=0.1101000+[-Y]补=1.1010000

10.0111000

自然丢失[X-Y]补=(0.0111000)2

,X-Y=(0.0111)2例4:已知机器字长n=8,X=-0.1101,Y=-0.0110

求X-Y=?解:[X]补=1.0011000,[Y]补=1.1010000[-Y]补=0.0110000[X]补=1.0011000+[-Y]补=0.0110000

1.1001000[X-Y]补=(1.1001000)2,

X-Y=(-0.0111)2溢出:运算结果超出了计算机所能表示的数据范围。正溢(上溢):运算结果为正而绝对值超出了表示的范围。负溢(下溢):运算结果为负而绝对值超出了表示的范围。定点数的溢出——根据数值本身判断。

溢出的概念和类型例:已知机器字长n=8,X=120,Y=10,求X+Y=?解:[X]补=01111000,[Y]补=00001010,

[X]补=01111000+[Y]补=0000101010000010[X+Y]补=10000010,X+Y=11111110X+Y的真值=-1111110=(-126)10

运算结果超出机器数值范围发生溢出错误。8位计算机数值表达范围:(-128~+127)两个相同符号数相加,其运算结果符号与被加数相反则产生溢出;两个相异符号数相减,其运算结果符号与被减数相反则产生溢出。相同符号数相减,相异符号数相加不会产生溢出。

溢出判断方法:进位判断法,双符号位法。溢出的判断规则和方法两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。例:[X]补=1.101[X]补=1.110+[Y]补=1.001+[Y]补=0.100[X+Y]补=10.110[X+Y]补=10.010

C=0,S=1有溢出C=1,S=1无溢出

没有正确结果X+Y=+0.010即:溢出OVR=S⊕C

=1有溢出

SC=01正溢;SC=10负溢

OVR=S⊕C

=0无溢出

溢出的判断方法---进位法设第一符号位Sf1,第二符号位Sf2,

Sf1

Sf2双符号含义:00表示运算结果为正数;

01表示运算结果正向溢出;

10表示运算结果负向溢出; 11表示运算结果为负数。即:溢出OVR=Sf1⊕Sf2=1有溢出OVR=Sf1⊕Sf2

=0无溢出

左边第一位的Sf1为运算结果的真正符号位。溢出的判断方法---双符号位例1:X=0.1001,Y=0.0101,求X+Y=?解:[X]补=00.1001+[Y]补=00.0101[X+Y]补=00.1110

两个符号位相同,运算结果无溢出。

X+Y=+0.1110例2:X=-0.1001,Y=-0.0101,求X+Y

=?解:[X]补=11.0111+[Y]补=11.1011[X+Y]补=111.0010

丢掉

两个符号位相同,运算结果无溢出。

X+Y=-0.1110例3:X=0.1011,Y=0.0111,

求[X+Y]补=?解:[X]补=00.1011+[Y]补=00.0111[X+Y]补=01.0010

两个符号位为01,正向溢出。

没有正确的结果解:[X]补=11.0100+1=11.0101[Y]补=00.0111[-Y]补=11.1001 [X]补=11.0101+[-Y]补=11.1001[X-Y]补=110.1110

两个符号位10不同,负溢。没有正确结果例4:X=-0.1011,Y=0.0111,

求[X-Y]补=?补码加减法运算规则如下:参加运算的操作数用补码表示。符号位与数值位一样参加运算。如果是加法运算,则直接相加

如果是减法,那么减数连同符号

位一起取反,然后末位加1。运算的结果仍然是补码形式。03算术逻辑运算单元ALU是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。算术逻辑单元(简称ALU)不考虑进位输入时,两数码Xn,Yn相加称为半加器。半加器若考虑低位进位输入Cn-1相加,则称为全加器。一位全加器真值表如右,其中:Xn

为被加数,Yn为加数,Cn-1为低级进位信号,Fn为和,Cn为本级向上进位信号。

XnYnCn-1FnCn000000011001010

0110110010

101011100111111

001100101010010

11111

全加器全加器逻辑表达式及电路图化简可得:Fn =Xn⊕Yn⊕Cn-1Cn =XnYn+(Xn+Yn)Cn=XnYn+(Xn⊕Yn)Cn-1用异或门实现的全加器半加器:Hn=Xn⊕Yn全加器:Fn =Xn⊕Yn⊕Cn-1Cn

=XnYn+(Xn⊕Yn)Cn-1XnYnHn/FnCn-1Cn半加器与全加器比较步骤加数最低位相加保存求和结果和进位加数右移一位,跳转到第一步特点仅需一位全加器需要N个周期完成N位加法运算串行加法器全加器数目=操作数(加数)的位数N个全加器特点同时(同一周期)执行各位的加法运算,下图为串行连接的并行加法器并行加法器缺点逐位完成的进位运算影响求和过程最坏情况下接近串行加法器的性能即1周期=N个加法/进位延迟例如:1111+0001结论并行加法器的性能决定于进位机制的设计进位函数串行进位并行进位混合方式并行加法器的进位链(选学)根据各位进位的形成条件,可分别写出Ci的逻辑表达式:

C1=X1Y1+(X1^Y1)C0=G1+P1C0

其中:

Gi=Xi·Yi

称为进位产生函数

Pi=Xi^Yi

称为进位传递函数

Gi的意义是:当XiYi均为“1”时一定会产生向高位的进位;

Pi的意义是:当Xi和Yi中有一个为“1”时,若同时低位有进位输入,则本位也将向高位传送进位。进位函数串行进位缺点逐位完成的进位运算影响求和过程最坏情况下接近串行加法器的性能即1周期=N个加法/进位延迟例如:1111+0001优点实现简单:n-1根进位输入/输出连线成本低,节省元器件,在分组中应用可以进行2个n位二进制数相加,进位逐级形成。也叫行波进位。根据X[0..n-1],Y[0..n-1],C0直接/同时确定各位对应的全加器的进位输入消除Cn+1对Cn的依赖关系各级进位同时产生并行进位四位并行进位加法器并行加法进位的优缺点:运算速度快增加了实现复杂度(硬件逻辑电路)进位信号的逻辑式会变得复杂可能突破输入信号的扇入系数结论:实现全字长的并行进位不可行对策:分组计算和进位机制组间采用串行或并行,组内采用并行进位并行进位加法的特点进位延迟较串行缩短很多组内并行、组间串行G0*=f(G0,G1,G2,G3,P1,P2,P3)P0*=g(P0,P1,P2,P3)组内并行、组间并行ALU是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。下面通过介绍SN74181型四位ALU中规模集成电路了介绍ALU的原理。ALU举例全加器与函数发生器的组合丰富的控制信号和求值逻辑复合的算术、逻辑运算功能ALU结构表中的“加”表示算术加,“+”表示逻辑加。能执行16种算术运算和16种逻辑运算,M是状态控制端,M=H,执行逻辑运算;M=L执行算术运算。S0~S3是运算选择端,它决定电路执行哪种算术运算或逻辑运算。注解:正逻辑表示高电平为‘1’,负逻辑表示低电平为‘1’74181的功能74181的引脚74181的内部电路04定点数的乘法和除法运算在计算机中实现乘除法运算,有三种方式:(1)软件实现:在低档微机中无乘除指令,只能用乘法或除法子程序实现。(2)在原有实现加减运算的ALU的基础上增加一些逻辑线路以实现乘除运算。(3)设置专用的乘除法器:主要用于要求快速乘除运算的机器中。定点乘法运算

设X=0.1101Y=0.1011求X﹡Y=?

0.11010.1011110111010000

1101

0.10001111

X﹡Y=0.10001111

+错位相加:加法运算是根本各位乘积结果所需加法运算次数不同手工乘法由于计算机的局限性,多位数的乘法要执行多次加法而且要浪费大量的器件,因此在计算机中乘法运算采用的方法是:累加与移位相结合

0.11010.101111011101000011010.10001111R

由于计算机的局限性,多位数的乘法要执行多次加法而且要浪费大量的器件,因此在计算机中乘法运算采用的方法是:

将n位乘转换成n次“累加与移位”,也就是每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一次。总体算法和原码一位乘的类似,分为校正法和比较法初始化方式相同:A寄存器初始为0,C寄存器初始化按照不同的算法有所不同补码带符号数一位乘算法描述

设[X]补=X0X1X2…Xn,[Y]补=Y0Y1Y2…Yn(1)当Y>0,即Y0=0时,

[X]补﹡[Y]补=[X]补﹡Y=[X﹡Y]补(2)当Y<0,即Y0=1时,则[Y]补=2+Y,Y=[Y]补-2=1·Y1Y2…Yn–2=0·Y1Y2…Yn-1

∴X﹡Y=X(0·Y1Y2…Yn)–X

则[X﹡Y]补=[X]补﹡(0·Y1Y2…Yn)+[-X]补定点补码一位乘----校正法

运算规律(1)C初始化为乘数不带符号的补码形式。(2)判断乘数的最末一位,若为0,下一步+0;若为1,下一步+[X]补。A,C一起向右移一位。当移位n次(n同乘数数值位数)运算结束。(3)若乘数为负数,则对求得的积再做一次加[-X]补的校正。(4)结果的符号由运算结果得出。例1X=-0.1101,Y=+0.1011,求X﹡Y=?

解:[X]补=11.0011,[Y]补=0.1011

高位部分积低位部分积/乘数操作说明

00.00001011开始部分积为0,判断乘数末位

+)11.0011∵乘数最低位为1,∴+[X]补

11.001111.100111011(丢掉)右移部分积和乘数,判末位

+)11.0011∵乘数最低位为1,∴+[X]补

10.110011.011001101(丢掉)右移部分积和乘数,+)00.0000∵乘数最低位为0,∴+011.011011.101100110(丢掉)右移部分积和乘数,计数+)11.0011乘数最低位为1,∴+[X]补

10.111011.011100011(丢掉)右移部分积和乘数,计数[X*Y]补=11.01110001,X﹡Y=-0.10001111例2X=-0.1101,Y=-0.1011,求X﹡Y=?

解:[X]补=11.0011,[Y]补=11.0101,[-X]补=00.1101

高位部分积低位部分积/乘数操作说明

00.00000101

开始部分积为0,判末位

+)11.0011∵乘数最低位为1,∴+[X]补

11.001111.10011010

1(丢掉)右移部分积和乘数,+)00.0000∵乘数最低位为0,∴+011.100111.11001101

0(丢掉)右移部分积和乘数,+)11.0011∵乘数最低位为1,∴+[X]补

10.111111.01111110

1(丢掉)右移部分积和乘数,+)00.0000∵乘数最低位为0,∴+011.011111.101111110(丢掉)右移部分积和乘数,[X﹡Y]补=11.10111111X和Y都为负数,结果错误∵Y为负数,对求得的积需再做一次加[-X]补的校正。

[-X]补=00.1101∴[X+Y]补=11.10111111+00.1101=00.10001111

所以:X﹡Y=+0.10001111

这种方法不用区分乘数符号的正负,而且让乘数符号位也参加运算。

运算规则如下:(1)参加运算的数用补码表示;(2)符号位参加运算;(3)被乘数一般取双符号位,参加运算,A寄存器初值为0;(4)乘数取单符号位(5)乘数末位增设附加位Yn+1,且初值为0;(6)逐次比较相邻两位并按Yn+1-Yn的结果运算.(7)移位按补码右移规则进行,即右移过程中符号位也随着右移并且符号位保持不变;但第n+1步不再移位,仅根据Y0和Y1的比较结果作相应的运算即可。定点补码一位乘----比较法YiYi-1ai=Yi-1-Yi操作0001101101-10部分积+0,右移一位部分积+[X]补,右移一位部分积+[-X]补,右移一位部分积+0,右移一位

开始N位被乘数

B,0AN位乘数C,0C-1C0C-1=?A-BAA+BAA、C右移一位重复n次结束Y

N

=01

=10

A+0A=00或11

例:设[X]补=0.1101,[Y]补=1.0110,求X﹡Y=?

加法器和被乘数采用双符号位。[-X]补=11.0011

高位部分积低位部分积/乘数附加位操作说明

00.000010110000.0000010110

YnYn+1=00,右移部分积和乘数一位+11.0011YnYn+1=10,+[-X]补

11.001111.1001101011右移部分积和乘数一位

11.1100110101

YnYn+1=11,右移部分积和乘数一位+00.1101YnYn+1=01,+[X]补

00.100100.0100111010右移部分积和乘数一位+11.0011YnYn+1=10,+[-X]补

11.01111110最后一次不右移∴[X﹡Y]补=11.01111110,∴X﹡Y=-0.10000010

在计算机中实现除法运算,就要解决如何判断够减与否的问题,可用2种方法:

(1)设置一个比较线路,专门用来比较被除数(余数)与除数的大小。

(2)直接作减法试探。定点除法运算算法主体

当余数为正时,商上1,求下一位商的办法是余数左移一位,再减去除数;

当余数为负时,商上0。求下一位商的办法是余数左移一位,再加上除数。

如果最后一次上商为0,而又需得到正确余数则在这最后一次仍需恢复余数。其处理思想是:先减除数后判断,如减后发现不够减,则在下一步改作加除数操作。这样操作步骤固定易于编程。商的符号:Qf=xf⊕yf,商的值:|Q|=|x|/|y|其运算规则:(1)符号位不参与运算,并要求|X|<|Y|;

(2)取双符号位表示,先用被除数减去除数:

·余数为正时,商上1,余数左移一位,再减去除数;

·余数为负时,商上0,余数左移一位,再加上除数;

(3)当第n+1步余数为负时,需恢复余数,再加上除数,但不移位,以保持余数为正。不恢复余数法(加减交替法)运算规则:第一次做减法即+[-B]补,用来判别溢出的情况当某一次求商,它减得的差值为负,本次商上0,然后左移,并且加上除数[Y]补。当某一次求商,减得的差值为正,上商为1,余数左移一位,然后+[-Y]补。注意余数一般是通过n次左移后得出的结果,那么真正的结果应该是这个数×2-n如果最后一次的余数为负,正确的余数应为+Y恢复后的正余数×2-n

。用不恢复余数除法完全可以代替恢复余数除法,且n位数除以n位数,只用做n+1次加减法,n次移位就可以了,缩短了除法时间。

被除数(余数)A商C操作说明

00101100000

初始状态+)110011+[-Y]补

11111000000

不够减,商上011110000000左移+)001101+Y0010010000

1

够减,商上1010010000

10左移+)110011+[-Y]补

000101000

1

1

够减,商上100101000

1

10左移+)110011+[-Y]补

11110100

1

1

0

不够减,商上01110100

1

1

00左移+)001101+Y0001110

1

1

0

1

够减,商上1例X=0.1011,Y=0.1101,求X/Y=?[-Y]补=11.0011商余数X/Y=0.1101余数=0.0111×2-4例:设X=0.100,Y=-0.101,用加减交替法求[X/Y]原。

[-|Y|]补=11.011,计算过程如右:

001000000开始情形11011+[-|Y|]补

11111 0000

余数为负,商上0

11110 0000

左移00101+[|Y|]补

000110001

余数为正,商上100110 0010

左移11011 +[-|Y|]补

00001 0011

余数为正,商上1

00010 0110

左移

11011

+[-|Y|]补

111010110 余数为负,商上000101 最后一步余数为负时需00010 +[|Y|]补得到正确的余数被除数(余数R)(被除数)(商)

操作说明余数

商+)+)+)+)+)←←←注意:余数与被 除数同号

解:|X|=001000,|Y|=001010

按除法规则,符号位Zs=Xs⊕Ys=1[-|Y|]补

=[|Y|]变补=110110

绝对值除法|X|/|Y|如下:试一试:X=+0.1000,Y=-0.1010,用原码加减交替法求[X/Y]原。

|X|/|Y|=1.1100+0.1000×2-4

结果商为[Z]原

=1.1100,Z=-0.1100,余数R=0.1000×2-4,

定点数补码一位除的一种方法是:

将被除数和除数的绝对值按无符号数除法得到商及余数;若两数异号,商符取负,否则取正;余数符号与被除数符号相同。

一般符号数用补码表示,所以我们直接用补码进行除法运算。

补码一位除(补码不恢复余数法)定点数补码一位除(选学)参加运算的数用补码表示,符号位参加运算,除数与被除数均用双符号补码表示。被除数与除数同号,求商时用被除数高位部分减去除数;被除数与除数异号,被除数高位部分加上除数。若余数与除数同号,上商1,余数左移一位减去除数;若余数与除数异号,上商0,余数左移一位加上除数。注意:余数左移加上或减去除数后就得到了新余数。采用校正法包括符号位在内,应重复3步骤n+1次。商的校正原则。(采用末位恒置“1”的方法)当刚好能除尽时(即运算过程中任一步余数为0),如果除数为正,则商不必校正,若除数为负,则商需要校正,即加2-n进行修正。不能除尽时,如果商为正,则不必校正;若商为负,则商需要加2-n进行修正。余数的校正原则。若商为正,当余数与被除数异号时,则应将余数加上除数进行修正才能获得正确的余数。若商为负,当余数与被除数异号时,则余数需减去除数进行校正。商的符号。如果第一步操作不发生溢出,得到的就是正确的商符。001000000开始情形11011X和Y异号,[Y]补

+[Y]补

11111 0001

余数与Y同号,商上1

11110 0010

左移00101+[-Y]补

000110010

余数与Y异号,商上000110 0100

左移11011 +[Y]补

00001 0100

余数与Y异号,商上0

00010 1000

左移

11011

+[Y]补

111011001 余数与Y同号,商上1被除数(余数R)(被除数)(商)

操作说明余数

商+)+)+)+)←←←例:已知X=0.100,Y=-0.101,用补码一位不恢复余数除法求[X/Y]补。解:[X]补=0.100,[Y]补=11.011,[-Y]补=00.101不能除尽,商为负,需校正:[X/Y]补=1.001+0.001=1.010余数与被除数异号,需校正:余数[r]补=(1.101+0.101)*2-3=0.010*2-3(余数与被除数同号)1111000000开始情形11011X和Y异号,[Y]补

+[Y]补

11111 0001

余数与Y同号,商上1

11110 0010

左移00101+[-Y]补

000110010

余数与Y异号,商上000110 0100

左移11011 +[Y]补

00001 0100

余数与Y异号,商上0

00010 1000

左移

11011

+[Y]补

111011001 余数与Y同号,商上1被除数(余数R)(被除数)(商)

操作说明余数

商+)+)+)+)←←←例:已知X=-0.0100,Y=0.1000,用补码一位不恢复余数除法求[X/Y]补。解:[X]补=11.1100,[Y]补=00.1000,[-Y]补=11.1000不能除尽,商为负,需校正:[X/Y]补=1.001+0.001=1.010余数与被除数异号,需校正:余数[r]补=(1.101+0.101)*2-3=0.010*2-3(余数与被除数同号)浮点数的加减运算05浮点数真值通常可写成:M•2E在机器数表示时:M为该浮点数的尾数,一般为绝对值小于1的规格化二进制小数,用原码或补码表示

E是该浮点数的阶码,为二进制整数,用移码或补码表示。

设有2个浮点数:X=MX•2EXY=MY•2EY

需要5个步骤才能完成加减运算:2个浮点数的阶码可能不同,要对齐后才能运算。对阶的规则是:阶码小的数向阶码大的数对齐。

一般方法是用减法比较,即求:

E=EX-EY

E=0,表示两数阶码相等,不需对阶。若0,则将原来阶码小的数的尾数右移E位,并将其阶码值加上E;尾数右移时,对原码形式的尾数,符号位不参加移位,尾数最高有效位补0;对补码形式的尾数,符号位保持不变并参加右移。

1.对阶操作2.实现尾数的加(减)运算:

完成对阶后,按定点数加减运算规则求两数的和(差)3.结果规格化:

当运算的结果不是

温馨提示

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

评论

0/150

提交评论