返回主页

[计算机组成原理 P1110] 已知计算f(n)的C语言函数f1如下

 
学习人数: 4.7k
 
正确率: ??%
答案解析

题目描述
未通过

已知计算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是多少?


上一题
下一题
加入错题本
个人笔记
已有13条笔记

登录后提交答案


1 个回答 (点击展开回答)