2017 全国硕士研究生入学统一考试

计算机学科专业基础2017 真题档案

47道题150满分
公告
目前真题为测试版,可能还会有错误。如果遇到想指出的错误,欢迎发邮件到 beokayy@qq.com 供我们勘误;预计两周后修正大部分错误后,将开放 PDF 做题本的免费下载。目前真题为测试版,可能还会有错误。如果遇到想指出的错误,欢迎发邮件到 beokayy@qq.com 供我们勘误;预计两周后修正大部分错误后,将开放 PDF 做题本的免费下载。
43 / 47
返回整卷
BOK 组成原理
组成原理

2017-43

综合题13

已知 f(n)=∑i=0n2i=2n+1-1=(11…1)2,计算 f(n) 的 C 语言函数 f1 如下:

int f1(unsigned n){
    int sum=1, power=1;
    for(unsigned i=0; i<=n-1; i++){
        power *= 2;
        sum += power;
    }
    return sum;
}

将 f1 中的 int 都改为 float,可得到计算 f(n) 的另一个函数 f2。假设 unsigned 和 int 型数据都占 32 位,float 采用 IEEE 754 单精度标准。请回答下列问题。
(1)当 n=0 时,f1 会出现死循环,为什么?若将 f1 中的变量 i 和 n 都定义为 int 型,则 f1 是否还会出现死循环?为什么?

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

(3)f1(24)和 f2(24)的返回值分别为 33 554 431 和 33 554 432.0,为什么不相等?

(4)f(31)=232-1,而 f1(31) 的返回值却为 -1,为什么?若使 f1(n) 的返回值与 f(n) 相等,则最大的 n 是多少?

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

43