计算机考研 | 2017年 | 计算机组成原理真题

【计算机组成原理2017年真题43题-13分】

在这里插入图片描述
(1)当n=0时, f 1 f_1 f1会出现死循环,为什么?若将 f 1 f_1 f1中的变量i和n都定义为int型,则fl是否还会出现死循环?为什么?

(2) f 1 ( 23 ) f_1(23) f1(23) f 2 ( 23 ) f_2(23) f2(23)的返回值是否相等?机器数各是什么(用十六进制表示)?

(3) f 1 ( 24 ) f_1(24) f1(24) f 2 ( 24 ) f_2(24) f2(24)的返回值分别为33554431和33554432.0,为什么不相等?

(4) f ( 31 ) = 2 32 − 1 f(31)=2^{32}-1 f(31)=2321,而 f 1 ( 31 ) f_1(31) f1(31)的返回值却为 -1,为什么?若使 f 1 ( n ) f_1(n) f1(n) 的返回值与 f ( n ) f(n) f(n)相等,则最大的n是多少?

(5) f 2 ( 127 ) f_2(127) f2(127)的机器数为7F80 0000H,对应的值是什么?若使 f 2 ( n ) f_2(n) f2(n)的结果不溢出,则最大的n是多少?若使 f 2 ( n ) f_2(n) f2(n)的结果精确(无舍入),则最大的n是多少?

【第一步:信息提取】

unsigned:0000 0000H~FFFF FFFFH,是无符号数;int 是有符号数

IEEE 754单精度标准:1位符号位;8位阶乘;23位位数,隐藏了1位

【第二步:具体解答】

第一小题:

(1)当n=0时, f 1 f_1 f1会出现死循环,为什么?

由于i和n是unsigned型的,故"i<=n-1"是无符号数比较,n=0时,n-1的机器数为全1,值是 2 32 − 1 2^{32}-1 2321,为unsigned 型可表示的最大数,条件"i<=n-1"永真,因此出现死循环。

(2)若将 f 1 f_1 f1中的变量i和n都定义为int型,则 f 1 f_1 f1是否还会出现死循环?为什么?

若i和n改为int类型,则不会出现死循环。

因为"i<=n-1"是带符号整数比较, n=0时,n-1的值是-1,当i=0时条件“i<=n-1”不成立,此时退出for循环。

第二小题:

(1) f 1 ( 23 ) f_1(23) f1(23) f 2 ( 23 ) f_2(23) f2(23)的返回值是否相等?

f 1 ( 23 ) f_1(23) f1(23) f 2 ( 23 ) f_2(23) f2(23) 的返回值相等。

f ( 23 ) = 2 23 + 1 − 1 = 2 24 − 1 f(23)=2^{23+1}-1=2^{24}-1 f(23)=223+11=2241,它的二进制形式是24个1,int占32位,没有溢出。

float有1个符号位,8个指数位,23个底数位,23个底数位可以表示24位的底数。所以两者返回值相等

(2)机器数各是什么(用十六进制表示)?

f1(23)的机器数是00FF FFFFH。

f2(23)的机器数是 4B7F FFFFH。

显而易见前者是24个1,即 ( 000000011111111111111111111111 ) 2 (000 0000 111 1111 1111 1111 1111 1111)_2 (000000011111111111111111111111)2

后者符号位是0,即 ( 01001011011111111111111111111111 ) 2 (0100 1011 0111 1111 1111 1111 1111 1111)_2 (01001011011111111111111111111111)2 指数位为 23 + 127 = ( 150 ) 10 = ( 10010110 ) 2 23+127=(150)_{10}=(10010110)_2 23+127=(150)10=(10010110)2,底数位是 ( 11111111111111111111111 ) 2 (111 1111 1111 1111 1111 1111)_2 (11111111111111111111111)2

注:IEEE 754单精度标准: 符号位( 1. 底数) ∗ 2 指数 符号位 (1.底数)* 2^{指数} 符号位(1.底数)2指数

指数=实际乘+127,即实际乘=指数-127

第三小题:

(1) f 1 ( 24 ) f_1(24) f1(24) f 2 ( 24 ) f_2(24) f2(24)的返回值分别为33554431和33554432.0,为什么不相等?

当n=24时,f(24)=1 1111 1111 1111 1111 1111 1111 B,而float型数只有24位有效位,舍入后数值增大,所以f2(24)比 f1(24)大 1。

第四小题:

(1) f ( 31 ) = 2 32 − 1 f(31)=2^{32}-1 f(31)=2321,而 f 1 ( 31 ) f_1(31) f1(31)的返回值却为 -1,为什么?

显然f(31)已超出了int型数据的表示范围,用 f 1 ( 31 ) f_1(31) f1(31)实现时得到的机器数为32个1,作为int型数解释时其值为-1,即f1(31)的返回值为-1。

(2)若使 f 1 ( n ) f_1(n) f1(n) 的返回值与 f ( n ) f(n) f(n)相等,则最大的n是多少?

因为int型最大可表示数是0后面加31个1,故使 f 1 ( n ) f_1(n) f1(n)的返回值与f(n)相等的最大n值是30。

第五小题:

(1) f 2 ( 127 ) f_2(127) f2(127)的机器数为7F80 0000H,对应的值是什么?

IEEE 754标准用"阶码全1、尾数全0"表示无穷大。f2返回值为float型,机器数7F800000H 对应的值是+∞

(2)若使 f 2 ( n ) f_2(n) f2(n)的结果不溢出,则最大的n是多少?

当n= 126时, f ( 126 ) = 2 127 − 1 = 1.1 … 1 × 2 126 f(126)=2^{127}-1= 1.1…1×2^{126} f(126)=21271=1.11×2126,对应阶码为 127 + 126 = 253 127+126=253 127126=253,尾数部分舍入后阶码加1,最终阶码为254,是IEEE 754单精度格式表示的最大阶码。故使2结果不溢出的最大n值为126。

(3)若使 f 2 ( n ) f_2(n) f2(n)的结果精确(无舍入),则最大的n是多少?

当n=23时,f(23)为24位1,float型数有24位有效位,所以不需舍入,结果精确。故使f2获得精确结果的最大n值为23。

【计算机组成原理2017年真题44题-10分】

在这里插入图片描述

(1)计算机M是RISC还是CISC?为什么?

(2)f1的机器指令代码共占多少字节?要求给出计算过程。

(3)第20条指令cmp通过i减n-1实现对i和n-1的比较。执行fl(0)过程中当i=0时,cmp指令执行后,进/借位标志CF的内容是什么?要求给出计算过程。

(4)第23条指令sh通过左移操作实现了 p o w e r ∗ 2 power * 2 power2 运算,在2中能否也用shl指令实现 p o w e r ∗ 2 power * 2 power2 ?为什么?

【第一步:信息提取】

  1. 机器指令长短不一——采用的是CISC
  2. 字节编址
  3. 从开始到结束 0040 107FH - 0040 1020H + 1 = 0000 0060H

【第二步:具体解答】

第一小题:

(1)计算机M是RISC还是CISC?为什么?

M为CISC。

M的指令长短不一,不符合RISC指令系统特点。

第二小题:

(1)f1的机器指令代码共占多少字节?要求给出计算过程。

如信息提取中③, ( 60 ) 16 = ( 96 ) 10 (60)_{16}=(96)_{10} (60)16=(96)10 ,所以96个字节

第三小题:

(1)第20条指令cmp通过i减n-1实现对i和n-1的比较。执行f1(0)过程中当i=0时,cmp指令执行后,进/借位标志CF的内容是什么?要求给出计算过程。

CF=1。

cmp指令实现i与n-1的比较功能,进行的是减法运算。

在执行 f 1 ( 0 ) f_1(0) f1(0)过程中,n=0,当i=0时,i= 0000 0000H,且n - 1 = FFFF FFFFH。

因此,当执行第20条指令时,在补码加/减运算器中执行“0减FFFF FFFFH"的操作,即0000 0000H + 0000 0000H + 1=00000001H

此时,进位输出C=0,减法运算时的借位标志CF=C异或1。

第四小题:

(1)第23条指令sh通过左移操作实现了 p o w e r ∗ 2 power * 2 power2 运算,在2中能否也用shl指令实现 p o w e r ∗ 2 power * 2 power2 ?为什么?

f2中不能用shl指令实现 power * 2。

因为shl指令用来将一个整数的所有有效数位作为一个整体左移;而2中的变量power是float 型,其机器数中不包含最高有效数位,但包含了阶码部分,将其作为一个整体左移时并不能实现“乘2”的功能,因而f2中不能用shl指令实现power*2。

浮点数运算比整型运算要复杂,耗时也较长。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值