计算机组成原理 第2章-运算方法与运算器_第1页
计算机组成原理 第2章-运算方法与运算器_第2页
计算机组成原理 第2章-运算方法与运算器_第3页
计算机组成原理 第2章-运算方法与运算器_第4页
计算机组成原理 第2章-运算方法与运算器_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第二章:运算方法和运算器2.1数据与文字的表示方法2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算方法和浮点运算器

2.1数据与文字的表示方法一、计算机中常用的数据表示格式:定点格式,

浮点格式.1、定点格式:约定机器中所有数据的小数点位置是固定不变的。将数据表示成定点纯小数或定点纯整数。假设用一个n+1位字来表示一个定点数X,在定点机中可表示为如下形式:

X0

X1X2...Xn-1

Xn

符号

量值(尾数)

如果数X表示的是纯小数:0≤|X|≤1-2-n

如果数X表示的是纯整数:

0≤|X|≤2n-1

2、浮点表示法,即小数点的位置是浮动的:N=Re.m

其中m称为浮点数的尾数,用定点小数表示。e称为浮点的指数,是一个整数,常称为阶码。比例因子的基数R对二进计数制的机器是一个常数,一般规定R为2,8或16。因此一个机器浮点数应当由阶码和尾数及其符号位组成:

阶符

阶码

数符

尾数

EsE1E2...Em

MsM1M2...Mn313023220IEEE标准:

32位浮点数

32位浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。M是尾数,放在低位部分,占有23位,用小数表示,小数点放在尾数域的最前面。E是阶码,占有8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。

一个规格化的32位浮点数x的真值可表示为:

x=(-1)s×(1.M)×2E-127

e=E-127

其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位)总是1。故这一位经常不予存储,而认为隐藏在小数点的左边。

64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数x的真值为:

x=(-1)s×(1.M)×2E-1023

e=E-1023SEM[例1]若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。

解:将16进制数展开后,可得二进制数格式为

0

1000001

001101100000000000000000

S

阶码(8位)

尾数(23位)

指数e=阶码-127=10000010-01111111=00000011=(3)10

包括隐藏位1的尾数1.M=1.01101100000000000000000=1.011011

于是有

x=(-1)s*1.M*2e

=+(1.011011)*23=+1011.011=(11.375)10

[例2]将十进制数20.59375转换成32位浮点数的二进制格式来存储。

解:首先分别将整数和分数部分转换成二进制数:

20.59375=10100.10011

然后移动小数点,使其在第1,2位之间

10100.10011=1.010010011*24

e=4

于是得到:S=0,E=4+127=131=10000011,

M=010010011

最后得到32位浮点数的二进制存储格式为:

01000001101001001100000000000000=(41A4C000)16

思考题:问:1、计算机中常用的数据表示格式?2、按照IEEE754标准,32位浮点数的标准格式包含哪几部分?3、对于真值:x=-1.0110110×2100如何用32位浮点数的标准格式表示?313023220SEM数符阶码尾数SE

M(11110001101101100000000000000000)2

=(C1B60000)16答:定点格式,浮点格式二、数的机器码表示:真值:书写用的数,机器码:机器内部使用的数1)

原码:比较自然的表示法,最高位表示符号,0为正,1为负。优点:简单易懂。缺点:加减法运算复杂。

若定点小数的原码形式为x0.x1x2...xn,则原码表示的定义是

[X]原=X

1>X≥0[X]原=1-X=1+|X|

0≥X>-1

式中[X]原是机器数,X是真值。

例如,X=+0.1001,则[X]原=0.1001

X=-0.1001,则[X]原=1.1001

通常,对于正数X=+0.x1x2…xn,则有:

[X]原=0.x1x2...xn

对于负数X=-0.x1x2…xn,则有:

[X]原=1.x1x2...xn

对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:

[+0]原=0.0000...0

[-0]原=1.0000...0

若定点整数的原码形式为x0x1x2...xn,则原码表示的定义是:

[X]原=X

2n>X≥0[X]原=2n-X=2n+|X|

0≥X>-2n2)

补码:加减法运算方便,减法可以转换为加法。若定点小数的补码形式为x0.x1x2...xn,则补码表示的定义是:

[X]补=X

1>X≥0[X]补=2+X=2-|X|

0≥X>-1

(mod2)

式中[X]补为机器数,X为真值。

例如,X=+0.1011,则[X]补=0.1011

X=-0.1011,则[X]补=10+X=10.0000-0.1011=1.0101一般情况下,对于正数X=+0.x1x2...xn,则有:

[X]补=0.x1x2...xn

对于负数X=-0.x1x2...xn,则有:

[X]补=10.00...0-0.x1x2...xn(mod2)

对于0,在补码情况下,[+0]补=[-0]补=0.0000

(mod2)

注意,0的补码表示只有一种形式。对2求补电路见图2.6

对于定点整数,补码表示的定义是:

[X]补=X

2n>X≥0

[X]补=2n+1+X=2n+1-|X|

0≥X>-2n

(mod

2n+1)3)

反码:将二进制数的各位数码0变为1,1变为0。它是为计算补码方便而引入.

对定点小数,反码表示的定义为

[X]反=X

1>X≥0

[X]反=(2-2-n)+X

0≥X>-1

其中n代表数的位数。

一般情况下,对于正数X=+0.x1x2...xn,则有

[X]反=0.x1x2...xn

对于负数X=-0.x1x2...xn,则有

[X]反=1.x1x2...xn

对于0,有[+0]反=[-0]反之分:

[+0]反=0.00...0

[-0]反=1.11...1

我们比较反码与补码的公式

[X]反=2-2-n+X

[X]补=2+X

可得到

[X]补=[X]反+2-n

若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。

对定点整数,反码表示的定义是

[X]反=X

2n>X≥0

[X]反=(2n+1-1)+X

0≥X>-2n若要一个负数变补码,只要将符号位置1,各位取反,末位加1。4)

移码:用于阶码的表示,两个移码容易比较大小,便于对阶。由于阶码是个n位的整数,所以假定定点整数移码形式为x0x1x2...xn时,移码的定义是:

[X]移=2n+X

2n>X≥-2n

式中[X]移为机器数,X为真值。即将数值向X轴正方向平移2n

若阶码数值部分为5位,以x表示真值,则

[X]移=25+X

25>X≥-25

例如,当正数x=+10101时,[X]移=1,10101;当负数x=-10101时,[X]移=25+X=25-10101=0,01011。移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位x0表示的规律与原码、补码、反码相反。一、计算:1、x=23/128[x]补=[x]原=2、x=-35/64[x]补=[x]原=3、x+y=1010[x+y]补=[x+y]原=4、x-y=-1101[x-y]补=[x-y]原=二、设机器字长为5位,采用定点整数表示,x=+110,求[x]原,[x]补解:因为n+1=5,所以n=4,[x]原=0,0110[x]补=0,0110↑↑↑x0x1…x4

显然,正数的原码与补码形式相同。三、设机器字长8位并用定点整数表示,模为28,若x=-110,求[x]原,[x]补。解:因为n+1=8,所以n=7,[x]原=10000110[x]补=M+x=28+(-110)=(100000000)2-110=11111010

四、由补码求原码与真值:对于正数,原码与补码相同,其真值在略去正号后,形式上与机器数相同;对于负数,保持符号位为1,其余各位变反末位加1,即得到原码表示,将负数原码符号恢复为负号,即得到真值表示。例:如[x]补=00000110,则[x]原=00000110,x=+110如[x]补=11111010,则[x]原=10000110,所以x=-110[x]原的具体计算如下:[x]补=11111010变反10000101末位加1+1

10000110五、补码的性质:补码的最高位是符号位,在形式上同于原码,0表示正,1表示负。但应注意,原码的符号位是人为地定义0正1负;而补码的符号位是通过模运算得到的,它是数值的一部分,可直接参与运算。

[例3]以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。

解:原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有一种形式,且用补码表示负数时范围可到-2n。

11...1

10...01

10...0

00...0

00...01

01...1

-(2n-1)

-1

0

+1

+(2n-1)

原码

10...0

11...10

11...1

00...0

00...01

01...1

-(2n-1)

-1

0

+1

+(2n-1)

反码

10...0

10...01

11...1

00...0

00...01

01...1

-2n

-(2n-1)

-1

0

+1

+(2n-1)

补码

[例4]设机器字长16位,定点表示,尾数15位,数符1位,问:

(1)定点原码整数表示时,最大正数是多少?最小负数是多少?

(2)定点原码小数表示时,最大正数是多少?最小负数是多少?

解:(1)定点原码整数表示

最大正数值=(215-1)10=(+32767)10

0

111111111111111

最小负数值=-(215-1)10=(-32767)10

1

111111111111111

(2)定点原码小数表示

最大正数值=(1-2-15)10=(+0.111...11)2

最小负数值=-(1-2-15)10=(-0.111...11)2

[例5]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为:

x=(-1)s*(1.M)*2E-128

问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?

解:

(1)最大正数0

11111111

11111111111111111111111

X=[1(1-2-23)]*2127

(2)最小正数0

00000000

00000000000000000000000

X=1.0*2-128

(3)最小负数1

11111111

11111111111111111111111

X=-[1+(1-2-23)]*2127

(4)最大负数1

00000000

00000000000000000000000

X=-1.0*2-1282.1.3字符与字符串的表示方式:ASCII码:P28表2.12.1.4汉字的表示方式:1)

输入码:用于汉字输入。数字编码、拼音码、字形编码。2)

内码:用于汉字的存储、交换、检索等操作的机内代码,一般采用两个字节表示。3)

字模码:是用点阵表示的汉字字形代码,它是汉字的输出形式,用于汉字的显示。2.1.5校验码奇、偶校验码:奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。它所约定的编码规律是让整个校验码(包括有效信息和校验位)“1”的个数为奇数或为偶数。有效信息部分当然既可能是奇性也可能是偶性,但可以配上一个为0或为1的校验位,使整个校验码能满足指定的奇偶性要求。由于有效信息的奇偶性只有两种可能:奇偶,所以只需配一位校验位。则奇校验就是使整个奇校验码“1”的个数为奇数。偶校验法就是使整个校验码“1”的个数为偶数。例1:有效信息

1011001

奇校验码10110011偶校验码

10110010例2:有效信息

1011011

奇校验码10110110偶校验码

10110111

译码:当从主存读出某数据时,将整个校验码(连同校验位)一道统计。若“1”的个数仍为偶数就认为该数是正确的,没有破坏原来约定的规律。若“1”的个数为奇数,表明有错,应停止使用这个数据,或重新读取,看是否属于偶然性错误。

2.2定点加法减法运算一、补码加法公式:[X]补+[Y]补=[X+Y]补(mod2)

[例1]x=0.1001,y=0.0101,求x+y

解:

[x]补=0.1001

[y]补=0.0101

[x]补

0.1001

+

[y]补

0.0101

──────────────

[x+y]补

0.1110

所以

x+y=+0.1110[例2]x=+0.1011,y=-0.0101,求x+y。

解:

[x]补=0.1011

[y]补=1.1011

[x]补

0.1011

+

[y]补

1.1011

──────────────

[x+y]补

1

0.0110(在模2的意义下相加,有超过2的

所以

x+y=+0.0110进位要丢掉)二、补码减法公式:[x-y]补=[x]补

-[y]补=[x]补+[-y]补[例3]已知x1=-0.1110,x2=+0.1101,求[x1]补[-x1]补[x2]补[-x2]补。

解:

[x1]补=1.0010

[-x1]补=→[x1]补+2-4=0.1101+0.0001=0.1110

[x2]补=0.1101

[-x2]补=→[x2]补+2-4=1.0010+0.0001=1.0011(符号→表示对[x1]补作包括符号位在内的求反操作)

[例4]x=+0.1101,y=+0.0110,求x-y。

解:

[x]补=0.1101

[y]补=0.0110

[-y]补=1.1010

[x]补

0.1101

+

[-y]补

1.1010

──────────────

[x-y]补

1

0.0111

所以

x-y=+0.0111三、溢出概念与检测方法溢出概念:在定点小数机器中,数的表示范围为|X|<1。在运算过程中如出现大于1的现象,称为“溢出”。在定点机中,正常情况下是不允许的。

[例5]x=+0.1011,y=+0.1001,求x+y。

解:

[x]补=0.1011

[y]补=0.1001

[x]补

0.1011

+

[y]补

0.1001

──────────────

[x+y]补

1.0100

两个正数相加的结果成为负数,这显然是错误的。

[例6]x=-0.1101,y=-0.1011,求x+y。

解:

[x]补=1.0011

[y]补=1.0101

[x]补

1.0011

+

[y]补

1.0101

──────────────

[x+y]补

0.1000两个负数相加的结果成为正数,这同样是错误的。[分析]

:发生错误的原因,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢。而两个负数相加,结果小于机器所能表示的最小负数,称为下溢。

为了判断“溢出”是否发生,可采用两种检测方法。第一种方法是:采用双符号位法,也称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。

数的变形补码定义为:

[x]补=x

当2>x≥0

[x]补=4+x

当0>x≥-2

或用同余式表示为:

[x]补=4+x

(mod4)

下式也同样成立:

[x]补+[y]补=[x+y]补

(mod4)

为了得到两数变形补码之和等于两数和的变形补码,同样必须:(1)两个符号位都看做数码一样参加运算;(2)两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。

采用变形补码后,任何小于1的正数,两个符号位都是(0),即00.x1x2...xn;任何大于-1的负数,两个符号位都是“1”,即11.x1x2...xn如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于1的数相加,其结果不会大于或等于2,所以最高符号位永远表示结果的正确符号。

[例7]x=+0.1100,y=+0.1000,求x+y。

解:

[x]补=00.1100

[y]补=00.1000

[x]补

00.1100

+

[y]补

00.1000

──────────────

01.1000

两个符号位出现“01”,表示已溢出,即结果大于+1。

[例8]x=-0.1100,y=-0.1000,求x+y。

解:

[x]补=11.0100

[y]补=11.1000

[x]补

11.0100

+

[y]补

11.1000

──────────────

10.1100

两个符号位出现“10”,表示已溢出,即结果大于-1。

由此,我们可以得出如下结论:

(1)当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为V=Sf1异或Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位,此逻辑表达式可用异或门实现。

(2)模4补码相加的结果,不论溢出与否,最高符号位始终批示正确的符号。

第二种溢出检测方法:是采用单符号位法。当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。故溢出逻辑表达式为V=CfC0,其中Cf为符号位产生的进位,C0为最高有益位产生的进位。此逻辑表达式可用异或门实现。

在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出这种溢出,并进行中断处理。四、基本的二进制加法/减法器:

一位全加器FA电路图一位全加器逻辑方程:Si=AiBiCiCi+1=AiBi+BiCi+CiAi

N位行波进位加法/减法器:

进位处理方式:串行进位(行波进位)、并行进位五、十进制加法器十进制加法/减法器见图2.3六、定点乘法运算:设n位被乘数和乘数用定点小数表示为(定点整数也同样):被乘数[X]原=Xf.Xn-1…X1X0乘数[Y]原=Yf.Yn-1…Y1Y0

乘积[Z]原=(XfYf)+(0.Xn-1…X1X0)(0.Yn-1…Y1Y0)式中,Xf为被乘数符号,Y1为乘数符号。乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数的符号组合只有四种情况(Xf.Yf=00,01,10,11),因此积的符号可按“异或”运算得到。

例:

设X=0.1101,Y=0.1011,让我们先用习惯方法求X与Y的乘积,其过程如下:0.1101(x)×0.1011(y)────────────110111010000+1101────────────0.10001111(z)

定点乘法运算分为:不带符号的阵列乘法、带符号的阵列乘法。在进行带符号的阵列乘法前应进行求补运算。求补器电路图见2.6,带求补级的阵列乘法器见图2.7七、补码与真值的转换公式:对定点补码整数[N]补=an-1an-2…a1a0,其中an-1是符号位,补码整数[N]补与真值N的关系为:例:已知:[N]补=(01101)2,[-N]补=(10011)2,求[N]补和[-N]补具有的数值。解:[N]补=(01101)2具有的数值为:N=-0*24+1*23+1*22+0*21+1*20=(+13)10

[-N]补=(10011)2具有的数值为:-N=-1*24+0*23+0*22+1*21+1*20=-16+3=(-13)10[例]设x=+15,y=-13,用带求补器的原码阵列乘法求出乘积x*y=?

解:设最高位为符号位,输入数据为原码:

[x]原=01111

[y]原=11101

因符号单独考虑,算前求补器输出后,|X|=1111,|y|=1101

1111

×

1101

符号位运算:01=1

──────

1111

0000

1111

+

1111

────────────

11000011

算后求补器输出为11000011,加上乘积符号位1,得

[x*y]原=111000011

换算成二进制数真值是X*Y=(-11000011)2=(-195)10

十进制乘法验证:15*(-13)=-195[例]设x=15,y=-13,用带求补器的补码阵列乘法器求出乘积x*y=?并用十进制乘法进行验证。

解:设最高位为符号位,输入数据用补码表示:

[x]补=01111

[y]补=10011

乘积符号位运算:X0Y0=01=1表示乘积为负的。算前求补器输出为|X|=1111,|y|=1101

1111

×

1101

──────

1111

0000

1111

+

1111

────────────

11000011

因乘积为负的,所以算后求补器输出时,应按负数求补码的变换方法将结果变为[11000011]补=00111101,并在最高位加上乘积符号1,最后得补码的乘积值

:[x*y]补=

100111101。利用补码与真值换算公式,补码二进制数真值是:X*Y=-1*28+1*25+1*24+1*23+1*22+1*20=(-195)10

十进制数乘法验证:X*Y=15*(-13)=-1952.4定点除法一、原码除法算法原理:两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。设有n位定点小数:被除数x,除数y,其原码为:

[X]原=Xf.Xn-1…X1X0,

[y]原=yf.yn-1…y1y0则商q=x/y,其原码为:[q]原=(xfyf)+(0.Xn-1…X1X0/0.yn-1…y1y0)例:

设被除数x=0.1001,除数y=0.1011,手算求x÷y的过程:

0.1101商q0.10110.10010x(r0)被除数小于除数,商0

-0.010112-1y除数右移1位,减除数,商10.001110r1得余数r1

-0.0010112-2y除数右移1位,减除数,商10.0000110r2得余数r20.00010112-3y除数右移1位,不减除数,商00.00001100r3得余数r3

-0.000010112-4y除数右移1位,减除数,商10.00000001r4得余数r4得x÷y的商q=0.1101,余数为r=0.00000001.

二、并行除法器:也叫不恢复余数阵列除法器,即加减交替法。在不恢复余数的除法阵列中,当余数为正时(ri≥0),商“1”,下次做减法运算,减法是用2的补码运算来实现的,此时[x-y]补=[x]补+[-y]补;当余数为负时(ri<0),商“0”,下次做加法运算。并且每次运算完成后要将余数左移一位,再与除数做加或减运算。商的符号由两数的符号按位相加求得。[例20]x=0.101001,y=0.111,求x÷y。解:[-y]补=1.001被除数x0.101001减y+1.001(相当于加[-y]补)余数为负1.110001<0→q0=0余数左移1.10001加y+

0.111余数为正0.01101>0→q1=1余数左移0.1101减y+

1.001(相当于加[-y]补)余数为负1.1111<0→q2=0余数左移1.111加y+

0.111余数为正0.110>0→q3=1故得商q=q0.q1q2q3=0.101余数r=(0.00r3r4r5r6)=0.000110abc=a.b000010100111abC=a+b000011101111ac=a0110dc0a1b4.多路器(ifd==0,c=a;elsec=b)1、与门(c=a.b)2、或门(c=a+b)cMUXabdabcacabc3、反向器(c=a)三、定点运算器组成:工作方式选择输入S3S2S1S0

负逻辑输入与输出正逻辑输入与输出逻辑M=H算术运算M=LCn=L逻辑M=H算术运算M=LCn=HLLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHHAABA+B逻辑1A+BBABA+BABABBA+B逻辑0ABABAA减1AB减1AB减1减1A加(A+B)AB加(A+B)A减B减1A+BA加(A+B)A加BAB加(A+B)A+BA加A*AB加AAB加AAAA+BAB逻辑0ABBABABA+BABBAB逻辑1A+BA+BAAA+BA+B减1A加AB(A+B)加ABA减B减1AB减1A加ABA加B(A+B)加ABAB减1A加A*(A+B)加A(A+B)加AA减1说明:(1)H=高电平1,L=低电平0,(2)*表示每一位均移到下一个更高位,即A*

=2A。

多功能74181ALU算术/逻辑运算功能表

2.6浮点运算方法和浮点运算器一、浮点加、减法运算设有两个浮点数X和Y,它们分别为:其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。两浮点加减运算的操作过程大体分为四步:第一步,0操作数检查;第二步,比较阶码大小并完成对阶;第三步,尾数进行加或减运算;第四步,结果规格化并进行舍入处理。图2.6示出浮点加减运算的操作流程。1、0操作数检查。2、比较阶码大小并完成对阶:△E=Ex-Ey,若△E=0,表示两数阶码相等,可以直接进行尾数加减运算;若△E>0,表示Ex>Ey,此时,将Y的尾数向右移位,每右移一位,其阶码加1,直到与X的阶码相等为止,右移的位数等于阶码△E;若△E<0,表示Ex<Ey,则将X的尾数也向右移。尾数右移引起最低有效位的丢失比左移引起最高有效位的丢失造成的误差要小。3、尾数求和运算:对阶结束后,即可进行尾数的求和运算。与定点加减运算完全一样。

4、结果规格化:当尾数求和的结果为01.x…x或10.x…x,即两符号位不相等,此时将尾数结果右移以实现规格化,简称右规,即尾数右移1位,阶码加1。否则进行左规处理,即尾数每左移1位,阶码减1,直到尾数的符号和最高有效位具有不同的代码达到规格化为止。5、舍入处理:就近舍入、朝0舍入。例:设x=2010*0.11011011,y=2100*(-0.10101100),求x+y。解:为便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为[x]浮=00010,0.11011011[y]浮=00100,1.01010100(1)求阶差并对阶△E=Ex-Ey=[Ex]补+[-Ey]补=00010+11100=11110即△E为-2,x的阶码小,应使Mx右移2位,Ex加2,[x]浮=00夸100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低两位数。(2)尾数求和0.00110110(11)+1.01010100─────────────1.10001010(11)(3)规格化处理:尾数运算结果的符号位与最高数值位为同值,应执行左规处理,结果为1.00010101(10),阶码为00011。

(4)舍入处理采用0舍1入法处理,则有1.00010101+1───────────1.00010110(5)判溢出阶码符号位为00,不溢出,故得最终结果为x+y=2011*(-0.11101010)二、浮点乘除法运算:1、运算规则:2、运算步骤:(1)0操作数检查;(2)阶码加/减操作;(3)尾数乘/除操作;(4)结果规格化及舍入处理。[X]移=2n+x2n>x≥-2n[x+y]移=[X]移+[y]补[x-y]移=[X]移+[-y]补当阶码的结果溢出时,须使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参加加减运算,则溢出条件是结果的最高符号位为1。此时,当低位符号位为0时,表明结果上溢;为1时,表明结果下溢。当最高符号位为0时,表明没有溢出;低位符号位为1,表明结果为正;为0时,表明结果为负。

例26:x=+011,y=+110,求[x+y]移和[x-y]移,并判断是否溢出。解:[X]移=01011,[y]补=00110,[-y]补=11010,[x+y]移=[X]移+[y]补=10001,结果上溢。

[x-y]移=[X]移+[-y]补=00101,结果正确,为-3。例28:设有浮点数x=2-5×0.0110011,y=23×(-0.1110010),阶码用4位移码表示,尾数(含符号位)用8位补码表示,求[x×y]浮。要求用补码完成尾数乘法运算,运算结果尾数保留高8位(含符号位),并用尾数低位字长的值处理舍入操作。解:移码采用双符号位,尾数补码采用单符号位,则有[Mx]补=0.0110011,[My]补=1.0001110,[Ey]移=01011,[Ey]补=00011,[Ex]移=00011,

[X]浮=01011,0.0110011,[y]浮=11011,1.0001110(1)求附中码和

[Ex+Ey]移=[Ex]移+[Ey]补=00011+00011=00110,值为移码形式-2。(2)尾数乘法运算可采用补码列乘法器实现,即有[Mx]补×

[My]补=[0.0110011]补×[1.0001110]补

=[1.1010010,1001010]补(3)规格化处理乘积的

温馨提示

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

评论

0/150

提交评论