首页 > 试题广场 >

分配给你一个任务,编写一个C函数来计算2x的浮点表示...

[填空题]

分配给你一个任务,编写一个C函数来计算2x的浮点表示。你意识到完成这个任务的最好方法是直接创建结果的IEEE单精度表示。当x太小时,你的程序将返回0.0。当x太大时,它会返回+∞。填写下列代码的空白部分,以计算出正确的结果。假设函数u2f返回的浮点值与它的无符号参数有相同的位表示。

float fpwr2(int x)
{
/* Result exponent and fraction*/
unsigned exp, frac;
 unsigned u;
if (x <1) {
/* Too small. Return0.0*/
exp = 2;
frac=3  ;
} else if (x <4) {
/* Denormalized result*/
exp =5;
frac = 6;       
} else if (x< 7) {
/* Normalized result.*/
exp=8;
frac = 9 ;
} else {
/* Too big. Return +oo*/
exp =10 ;
frac =   11 ;
}
/* Pack exp and frac into 32 bits*/
u = exp << 23 | frac;
/* Return as float*/
return n2f(u);
}

这道题你会答吗?花几分钟告诉大家答案吧!