怎么计算出大于某个值的最小2的次幂
如何计算出大于某个值的最小2的次幂
例如,求出大于或等于12、13、15等数值的最小2的次幂:16;同理,大于等于5、6、7的最小次幂为8。
//v必须是一个32位整数 int roundup_power_of_2(unsigned int v) { v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++; return v; }
更多位相关算法:
http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2