c - 在C中获取 float 的指数

标签 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???
    }

}

我不知道如何获得指数。任何帮助将不胜感激!

最佳答案

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

二进制指数位于第 23 位到第 30 位中。因此,在对 0x7F800000 进行掩码之后,正如您所做的那样,您只需将左侧的内容向右移动 23 位,就可以得到二进制指数。

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

关于c - 在C中获取 float 的指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159832/

相关文章:

c - 从文本文件读取网格并将其存储在二维数组中?

java - 性能: float 转换为整数并将结果裁剪到范围

algorithm - 平铺算法

c++ - 无法从 C++ 中的多维数组中检索正确的浮点值

algorithm - 移除最少数量的 Blade

c# - 星搜索算法

c - 单向链表C反向数据读取

c - realloc 不为下一个结构分配内存

c - 求和/添加整数数组中的所有其他组件失败

javascript - 浮点 0.2 + 0.1 舍入误差