通過直線位操作正整數基地2(樓)這是我需要做的:找到最顯著位或登錄用C
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)
但我不能得到它的工作。謝謝你的時間。
條件,我依稀回憶的方式找到最顯著位,但不是最顯著。但是如果你必須使用條件,你可能做得不對。 –
[Compute fast log base 2 ceiling]可能的重複(http://stackoverflow.com/questions/3272424/compute-fast-log-base-2-ceiling) –
是不是運算符'? :一個控制結構? –