所以我试图返回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???
}
}
我无法弄清楚如何获得指数。任何帮助将不胜感激!
答案 0 :(得分:2)
检查浮点格式http://en.wikipedia.org/wiki/IEEE_754-1985
二进制指数位于第23位到第30位。因此,在屏蔽0x7F800000之后,就像你所做的那样,你只需要将左边的内容向右移23位,你就得到了二进制指数。
然后通过减去偏差来调整偏差。
答案 1 :(得分:1)
如果数字是非规范化的,则从指数中减去127。如果不是则减去126。