我是C的新手,我们在课堂上使用它来帮助我们了解相当低级别的计算机系统。
我遇到了以下问题:所有代码都是给了我的,除了exp,frac,并且每个'的数字与x进行比较。言。
逐字:
"您被分配了编写C函数以计算2 ^ x的浮点表示的任务。您决定最好的方法是直接构造结果的IEEE单精度表示。当x太小时,您的例程将返回0.0。当x太大时,它将返回+无穷大。填写后面代码的空白部分以计算正确的结果。假设函数u2f返回一个浮点值,该浮点值具有与其无符号参数相同的位表示。"
float fpwr2(int x)
{
/* Result exponent and fraction */
unsigned exp frac;
unsigned u;
if (x< -126){
/* Too small. Return 0.0 */
exp = 00000000;
frac = 00000000000000000000000;
}else if (x< 1){
/* Denormalized result */
exp = 00000000;
frac = ;
}else if (x< 128){
/* Normalized result */
exp = ;
frac = ;
}else{
/* Too big. Return +00 */
exp = 11111111;
frac = 00000000000000000000000;
}
/* Pack exp and frac into 32 bits */
u = exp << 23 | frac;
/* Return as float */
return u2f(u);
}
我不是要求任何人为我做作业。我输了。我相当肯定我填写的一些空白,但在我看来,我留下的空白有动态解决方案;也就是说,答案不是取决于x?
请帮助我理解,我觉得它比我意识到的要简单得多!