我有一个float, f,在 1 到 0 的范围内,我想映射到一个int, i。f与以下有关i:
f = 1/(2^i)
所以
i = log2(1/f)
我使用以下计算i:
int i = log2f(floorf(1/f));
这个表达式涉及 3 个浮点运算,所以我认为它的效率相对较低。
我的问题:
- 一般来说,这是低效的吗?(我明白由于平台相关的优化,这很难回答)
- 是否可以创建更有效的算法?鉴于这涉及到我猜想可以使用s 和位移
2^n来创建更有效的算法。int