【发布时间】:2014-03-03 23:32:53
【问题描述】:
所以我试图返回 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???
}
}
我不知道如何获得指数。任何帮助将不胜感激!
【问题讨论】:
-
如果不是为了作业,你会在手册中查找
frexp()。 -
另见Dividing floating point numbers by half in binary。不是直接重复,而是密切相关。
-
@JonathanLeffler 你的 cmets 没有帮助。
-
为什么用十进制表示掩码? Hex 会让你的工作对你的读者和你自己更清楚。
-
按位运算应使用十六进制掩码,因为它与二进制编码直接相关
标签: c floating-point puzzle exponent