新编计算机组成原理习题与解析精编资料Word下载.docx

上传人:b****6 文档编号:20596497 上传时间:2023-01-24 格式:DOCX 页数:7 大小:19.20KB
下载 相关 举报
新编计算机组成原理习题与解析精编资料Word下载.docx_第1页
第1页 / 共7页
新编计算机组成原理习题与解析精编资料Word下载.docx_第2页
第2页 / 共7页
新编计算机组成原理习题与解析精编资料Word下载.docx_第3页
第3页 / 共7页
新编计算机组成原理习题与解析精编资料Word下载.docx_第4页
第4页 / 共7页
新编计算机组成原理习题与解析精编资料Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

新编计算机组成原理习题与解析精编资料Word下载.docx

《新编计算机组成原理习题与解析精编资料Word下载.docx》由会员分享,可在线阅读,更多相关《新编计算机组成原理习题与解析精编资料Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

新编计算机组成原理习题与解析精编资料Word下载.docx

【例4】两个浮点数相加,阶码用原码表示,一个数的阶码为7,另一个数的阶码为10,则需要将阶码较小的浮点数的小数点 

A.左移2位 

B.左移3位 

C.右移2位 

D.右移3位

在对阶时总是让小阶码向大阶码看齐,这里将小阶码变为10,对应的尾数相应减小,即将小阶码的尾数右移3位,相当于它的小数点左移3位。

【例5】两个浮点数相加,阶码为5位(含1位符号位),阶码用二进制移码表示,x的阶码为11010(10),y的阶码为11000(8),则需要将阶码较小的浮点数的尾数 

x的阶码为11010,即x=01010,对应十进制数10,y的阶码为11000,即y=01000,对应十进制数8,两者相差2,所以需要将阶码较小的浮点数y的尾数右移2位。

本题答案为C。

也可以这样来求解,因为[x]移=11010,[y]移=11000,所以有[x-y]移=[x]移-[y]移+2n=11010-11000+10000=10010+10000=10010,则x-y=00010,为十进制数2。

【例6】若浮点数采用补码表示,判断加/减运算的结果是否为规格化数的方法是 

A.阶符和数符相同 

B.阶符和数符相异

C.数符和尾数最高位相同 

D.数符和尾数最高位相异

一个浮点数用二进制补码表示,若符号位与尾数最高位相异,则该数是规格化表示。

2.填空题

【例7】在浮点加减法运算中,当运算结果的尾数的绝对值大于1时,需要对结果进行 

①,其操作是 

② 

本题答案是:

①向右规格化②尾数右移一位,右边补一个0,阶码减1,直到尾数绝对值≥0.5。

【例8】设两个浮点数为x=201×

0.1101,y=211×

(-0.1010)。

假设尾数在计算机中以补码表示(4位尾数,另有2位符号位),阶码(2位阶码)以原码表示(另有2位阶符位),求x+y的结果是 

将x、y转换成浮点数据格式,[x]浮=0001,00.1101,[y]浮=0011,11.0110,相加运算的步骤如下。

对阶:

求得阶差为11-01=10,即2,因此将x的尾数右移两位,得[x]浮=0011,00.001101。

对尾数求和,得[x+y]浮=0011,11.100101。

规格化:

由于符号位和第一位数相等,不是规格化数,故向左规格化,得[x+y]浮=0010,11.001010。

舍入:

采用0舍1入法,得[x+y]浮=0010,11.0011。

判溢:

数据无溢出,因此结果为x+y=2010×

(-0.1101)。

本题答案为:

2010×

3.问答题

【例9】什么是浮点数的溢出?

什么情况下会发生上溢出?

什么情况下会发生下溢出?

浮点数的运算结果可能出现以下几种情况。

阶码上溢出:

当一个正指数超过了最大允许值,此时,浮点数发生上溢出(即向∞方向溢出)。

如果结果是正数,则发生正上溢出(有的机器把值置为+∞);

如果是负数,则发生负上溢出(有的机器把值置为-∞)。

这种情况为软件故障,通常要引入溢出故障处理程序来处理。

阶码下溢出:

当一个负指数比最小允许值还小,此时,浮点数发生下溢出。

一般机器把下溢出时的值置为0(+0或-0)。

尾数溢出:

当尾数最高有效位有进位时,发生尾数溢出。

此时,进行“右规”操作:

尾数右移一位,阶码加1,直到尾数不溢出为止。

此时,只要阶码不发生上溢出,则浮点数不会溢出。

非规格化尾数:

当数值部分高位出现0时,尾数为非规格化形式。

此时,进行“左规”操作,即尾数左移一位,阶码减1,直到尾数为规格化形式为止。

【例10】已知两个实数x=-68,y=-8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。

另外,还有两个寄存器C和D。

A、B、C、D都是32位的寄存器。

请回答下列问题(要求用十六进制表示二进制序列):

(1)寄存器A和B中的内容分别是什么?

(2)x和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么?

(3)x和y相减后的结果存放在D寄存器中,寄存器D中的内容是什么?

(1)在计算机中,float型的变量都被表示成IEEE754单精度格式。

x=-68=-(1000100)2=-1.0001×

26,符号位为1,阶码为127+6=128+5=(10000101)2,尾数为1.0001,所以小数部分为:

00010000000000000000000,合起来后整个浮点数表示为:

11000010100010000000000000000000,写成十六进制为:

C2880000H。

y=-8.25=-(1000.01)2=-1.00001×

23,符号位为1,阶码为127+3=128+2=(10000010)2,尾数为1.00001,所以小数部分为:

00001000000000000000000,合起来后整个浮点数表示为:

11000001000001000000000000000000,写成十六进制为C1040000H。

因此,寄存器A和B中的内容分别是C2880000H、C1040000H。

(2)两个浮点数相加的步骤如下。

Ex=10000101,Ey=10000010,则[Ex-Ey]补=[Ex]补+[-Ey]补=10000101+01111110=00000011。

Ex大于Ey,所以对y进行对阶。

对阶后,y=-0.00100001×

26。

尾数相加:

x的尾数为-1.00010000000000000000000,y的尾数为-0.00100001000000000000000,用原码加法运算实现,两数符号相同,做加法,结果为-1.00110001000000000000000,即x加y的结果为-1.00110001×

26,所以符号位为1,尾数为:

00110001000000000000000,阶码为127+6=128+5,即:

10000101。

合起来为:

11000010100110001000000000000000,转换为十六进制形式为:

C2988000H。

所以,寄存器C中的内容是C2988000H。

(3)两个浮点数相减的步骤同加法,对阶的结果也相同,只是尾数相减。

x的尾数为-1.00010000000000000000000,y的尾数为-0.00100001000000000000000。

用原码减法运算实现,两数符号相同做减法时,符号位取大数的符号,即为负数,所以为1。

数值部分是大数加小数负数的补码:

1.000 

1000 

0000 

0000

1.110 

1111 

0.111 

0111 

x减y的结果为-0.11101111×

26=-1.1101111×

25,所以:

符号位为1,尾数为11011110000000000000000,阶码为127+5=128+4,即10000100。

11000010011011110000000000000000,转换为十六进制形式为:

C26F0000H,所以寄存器D中的内容是C26F0000H。

【例11】两个规格化浮点数求和、差,最后对结果规格化时,能否确定需要右规的次数?

能否确定需要左规的次数?

两个n位数相加、减,其和、差最多为n+1位,因此有可能需要右规,但右规最多一次。

由于异号数相加,或同号数相减,其和、差的最少位数无法确定,因此左规的次数也无法确定,但次数最多不会超过尾数的字长,即n次。

【例12】两个规格化浮点数相乘时,是否可能需要右规?

为什么?

是否可能需要左规?

若需要,能否确定左规的次数?

规格化浮点数相乘时,只有当两个浮点乘数的尾数均为-1时才需要右规。

因为(-1)×

(-1)=1,-1为规格化数,而+1不是,所以需要右规,使尾数成为+1/2。

规格化浮点数相乘时需要左规。

规格化尾数的范围为:

1/2≤|M|≤1,其积的范围为:

1/4≤|积|<

1,因此最多左规一次。

【例13】两个规格化浮点数相除,是否可能需要左规?

是否可能需要右规?

若需要,能否确定右规的次数?

规格化浮点数相除时,只有一种情况需要左规,即当被除数的尾数为1/2、除数的尾数为-1时,需要左规。

因为(1/2)/(-1)=-1/2,1/2和-1均为规格化数,而-1/2不是,所以需要左规一次,使尾数成为-1。

规格化浮点数相除时,被除数、除数均为规格化数,规格化尾数的范围均为:

1/2≤|M|≤1,所以商的绝对值范围为:

1/2≤|商|<

2。

因此需要右规,但最多右规一次。

【例14】设阶码为5位(包括2位阶符),尾数为8位(包括2位数符),阶码、尾数均用补码表示,请完成下列取值的[x+y]、[x-y]运算:

(1)x=2-011×

0.100101,y=2-010×

(-0.011110)

(2)x=2-101×

(-0.010110),y=2-100×

0.010110

(1)将y规格化后得:

y=2-011×

(-0.111100),[x]浮=1101,00.100101,[y]浮=1101,11.000100,[-y]浮=1101,00.111100。

①对阶

[ΔE]补=[Ex]补+[-Ey]补=1101+0011=0000,所以Ex=Ey。

②尾数相加

相加 

相减

00.100101 

00.100101

11.000100 

 

00.111100

11.101001 

01.100001

[x+y]浮=1101,11.101001,左规后[x+y]浮=1100,11.010010,所以x+y=2-100×

(-0.101110)。

[x-y]浮=1101,01.100001,右规后[x-y]浮=1110,00.1100001,舍入处理得[x-y]浮=1110,00.110001,所以x-y=2-110×

0.110001。

(2)[x]浮=1011,11.101010,[y]浮=1100,00.010110,[-y]浮=1100,11.101010。

[ΔE]补=[Ex]补+[-Ey]补=1011+0100=1111,所以△E=-1,[x]浮=1100,11.110101(0)。

11.110101(0) 

11.110101(0)

00.010110 

11.101010

00.001011(0) 

11.011111(0)

[x+y]浮=1100,00.001011(0),左规后[x+y]浮=1110,00.1011000,所以x+y=2-110×

0.1011B。

[x-y]浮=1100,11.011111(0),所以x-y=2-100×

(-0.100001B)。

【例15】已知两个浮点数:

A=(-0.010011)×

2-010,B=(+0.110111)×

2+001。

假定阶码和尾数都用补码表示,阶码4位(含1位符号位),尾数7位(含1位符号位)。

试按规格化补码加法规则和步骤,采用0舍1入法,求[A+B]补是多少?

求[A+B]补的步骤如下。

①求运算中所需的数据

[A]补=([EA]补,[MA]补)=(1.110,1.101101)。

[B]补=([EB]补,[MB]补)=(0.001,0.110111)。

[-EB]补=1.111。

②求阶差

[△E]补=[EA]补-[EB]补=[EA]补+[-EB]补=1.110+1.111=1.101。

③对阶

[A]补变为[A'

]补,[A'

]补=([E'

A]补,[M'

A]补)=(0.001,1.111101)。

④尾数求和

[MA]补+[M’B]补=11.111101+00.110111=00.110100。

[A+B]补=(0.001,00.110100)。

⑤规格化

已是规格化数。

⑥舍入

需要舍入。

采用0舍1入法,所以有[A+B]补=0.001,0.110101。

【例16】用浮点数运算步骤对56+5进行二进制运算,浮点数格式为1位符号位、5位阶码、10位尾码,基数为2。

(56)10=(111000)2=0.111000×

(5)10=(101)2=0.101×

23。

①对阶:

0.101×

23=0.000101×

②尾数相加:

0.111000+0.000101=0.111101。

③规格化结果:

0.111101×

④舍入:

数据已适合存储,不必舍入。

⑤检查溢出:

数据无溢出。

【例17】设有两个浮点数X和Y,阶码和尾数均以补码表示,已知X的阶码为0010,尾数为0.1001,Y的阶码为1101,尾数为0.0111。

求X×

Y和X÷

Y。

(1)求X×

Y的步骤如下。

①阶码相加:

0010+1101=1111。

②尾数相乘:

[MX×

MY]补=0.1001×

0.0111=1.10101111,或MX×

MY=-0.01010001。

③向左规格化:

左移一位,阶码为-1,乘积的阶码=1111-1=1111+1111=1110(补码),乘积的尾数=1.01011110(补码)。

取4位结果,因1.01011110中小数点后第5位为1,所以尾数舍入后为1.0101+0.0001=1.0110(补码)。

Y的补码表示为:

阶码为1110,尾数为1.0110。

(2)求X÷

Y的步骤如下:

①阶码相减:

0010-1101=0010+0011=0101。

②尾数相除:

[MX÷

MY]补=1.0000。

③结果不需要规格化。

因此X÷

阶码为0101,尾数为1.0000。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1