最接近且大於等於某個正整數的2的整數次冪

http://hi.baidu.com/aztack/item/aa66f65740ffe8c09f2667ab

昨天同事問我有啥好算法來計算「最接近且大於等於某個正整數的 2的整數次冪
用二進制思考比較容易:找到某個正整數二進制表示中最高爲1的位r。若是這個數是 2的整數次冪
那麼所求就是它自己,不然就是2^(r+1)。

翻了翻Intel CPU的指令集,找到以下指令:


正好可用


輸出:
256
256
512
15:05 2011-1-3
最近看Google JavaScript V8代碼,其中有一個函數作一樣的事情:
unsigned int RoundUpToPowerOf2(unsigned int x){ ASSERT(x<=0x80000000u); x = x - 1; x = x | (x >> 1); x = x | (x >> 2); x = x | (x >> 4); x = x | (x >> 8); x = x | (x >> 16); return x + 1;}
相關文章
相關標籤/搜索