最接近且大于等于某个正整数的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;}
相关文章
相关标签/搜索