float
、、にf
マップしたい 1 から 0 の範囲にありint
ますi
。f
に関連しi
ています:
f = 1/(2^i)
それで
i = log2(1/f)
私は計算するために以下を使用していますi
:
int i = log2f(floorf(1/f));
この式には 3 つの float 操作が含まれているため、比較的非効率的であると思います。
私の質問:
- 一般的に言えば、これは非効率的ですか?(プラットフォームに依存する最適化のため、これは答えにくいことを理解しています)
- より効率的なアルゴリズムを作成することは可能ですか? これには、 s とビット シフト
2^n
を使用して、より効率的なアルゴリズムを作成できると思います。int