我是 C 的新手,我们在课堂上使用它来帮助我们理解相当低级的计算机系统。
我遇到了以下问题,除了 exp、frac 和每个“if”语句中与 x 进行比较的数字之外,所有代码都给了我。
逐字:
“你的任务是编写一个 C 函数来计算 2^x 的浮点表示。你认为最好的方法是直接构造结果的 IEEE 单精度表示。当 x 是太小,您的例程将返回 0.0。当 x 太大时,它将返回 +infinity。填写后面代码的空白部分以计算正确的结果。假设函数 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吗?
请帮助我理解,我觉得这比我意识到的要简单得多!