1

我是 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吗?

请帮助我理解,我觉得这比我意识到的要简单得多!

4

0 回答 0