获取C中浮点数的指数

时间:2014-03-03 23:32:53

标签: c floating-point puzzle exponent

所以我试图返回f的指数值。如果x是无穷大或NaN,我需要返回Tmax。 f被解释为单精度浮点值的位级表示,是的,我的意思是传入无符号变量。我知道我需要删除适当的偏差值。我只是想弄清楚如何。我可以使用我想要的任何操作但只有8个(=不计算)。

int float_exp(unsigned uf) {
    int mask = 2139095040;
    int hold;
    hold = uf & mask;
    if(mask == hold){
            return Tmax;
    } else {
        return ;// something here???
    }

}

我无法弄清楚如何获得指数。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

检查浮点格式http://en.wikipedia.org/wiki/IEEE_754-1985

二进制指数位于第23位到第30位。因此,在屏蔽0x7F800000之后,就像你所做的那样,你只需要将左边的内容向右移23位,你就得到了二进制指数。

然后通过减去偏差来调整偏差。

答案 1 :(得分:1)

如果数字是非规范化的,则从指数中减去127。如果不是则减去126。