功率給定一個無符號的整數a
(小於或等於1024
),我需要找到一個數p
滿足下列條件:最近的2
- 最低
p >= a
p
是2的冪
我敢肯定有一個更好的解決方案,使用位運算符。
你有更好的解決方案嗎?
unsigned int closest_pow2(unsigned int a)
{
if (a == 0 || a > 1024) return 0; //error, never happen
if (a == 1) return 1;
if (a == 2) return 2;
if (a <= 4) return 4;
if (a <= 8) return 8;
if (a <= 16) return 16;
if (a <= 32) return 32;
if (a <= 64) return 64;
if (a <= 128) return 128;
if (a <= 256) return 256;
if (a <= 512) return 512;
if (a <= 1024) return 1024;
}
看看<<操作 –
難道這個問題確實涉及到你有一個實際的問題?那麼,請告訴我們吧! – Wolf
是的,這是考慮到元素降低的數量上GPGPU我的減少算法(點積的部分)所使用的緩衝區的大小。 – Michael