文章

117

粉丝

0

获赞

0

访问

5.6k

头像
2017年计算机学科专业基础综合试题 - 第43题回答
计算机组成原理
发布于2025年7月2日 16:42
阅读数 19

1)i和n是unsigned型,故“i<=n-1”是无符号数比较,n=0时,n-1的机器数为全1,值是232-1,为unsigned型可表示的最大数,条件“i<=n-1”永真,因此出现死循环。
若i和n改为int类型,则不会出现死循环。因为“i<=n-1”是带符号整数比较,n=0时,n-1的值是-1,当i=0时条件“i<=n-1”不成立,此时退出for循环

2)故f1(23)与f2(23)的返回值相等。f1(23)的机器数是00FF FFFFH。f2(23)的机器数是4B7F FFFFH。

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

4)显然f(31)已超出了int型数据的表示范围,用f1(31)实现时得到的机器数为32个1,作为int型数解释时其值为-1,即f1(31)的返回值为-1。因为int型最大可表示数是0后面加31个1,故使f1(n)的返回值与f(n)相等的最大n值是30。

5)

5)IEEE754标准用“阶码全1、尾数全0”表示无穷大。f2返回值为float型,机器数7F800000H对应的值是+无穷。float不溢出的最大阶码为254-127=127,故使f2结果不溢出,则最大n值为126。当n=23时,f(23)为24位1,float型数有24位有效位,所以不需舍入,结果精确。故使2获得精确结果的最大n值为23。


评分及理由

(1)得分及理由(满分4分)

得分:4分

理由:学生完全理解了unsigned和int类型在循环条件中的区别,并正确解释了死循环的原因及修改后的行为。

(2)得分及理由(满分3分)

得分:3分

理由:学生正确回答了f1(23)和f2(23)的返回值相等,并给出了正确的机器数表示。

(3)得分及理由(满分1分)

得分:1分

理由:学生正确解释了f2(24)比f1(24)大1的原因,即float型数的舍入处理。

(4)得分及理由(满分2分)

得分:2分

理由:学生正确解释了f1(31)返回-1的原因,并...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发