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