我有一个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