所以我试图返回 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/