我有一個float
,f
,範圍爲1到0,我想映射到一個int
,i
。用於將分數映射到整數的高效算法
f = 1/(2^i)
所以
i = log2(1/f)
我使用以下方法來計算i
:
int i = log2f(floorf(1/f));
此表達涉及3次浮點運算,所以我假設它是f
由相關i
相對低效。
我的問題:
- 一般來說,這是效率低下? (我明白這是一個很難回答,由於平臺相關的優化)
- 是否有可能創建一個更高效的算法?鑑於這涉及到
2^n
我猜想可以使用int
和位移來創建更高效的算法。
是吧'我^ 2'或'2^i'? – Vlad
@Vlad很好!固定。 –
爲什麼要鋪兩次?爲什麼不是我= log2f(1/f)? – zmbq