これは私がする必要があることです:
int lg(int v)
{
int r = 0;
while (v >>= 1) // unroll for more speed...
{
r++;
}
}
上記の解決策をhttp://graphics.stanford.edu/~seander/bithacks.html#IntegerLogで見つけました。
これは機能しますが、ループ、制御構造、または 0xFF (255) より大きい定数を使用せずに実行する必要があります。これを見つけるのは非常に難しいことがわかっています。フォームの条件を使用して何かを理解しようとしています
( x ? y : z ) = (((~(!!x) + 1)) & y) | ((~(~(!!x) + 1)) & z)
しかし、私はそれを機能させることができません。御時間ありがとうございます。