C中的归一化和非规范化混淆

时间:2015-04-17 22:33:49

标签: c floating denormalized

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

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

0 个答案:

没有答案