是否有一个单行表达式(可能是 bool(boolean) 值)来获取给定整数的最接近的2^n号?

示例:5,6,7必须为8。

最佳答案

四舍五入到下一个更高的2的幂:请参见bit-twiddling hacks

在C中:

unsigned int v; // compute the next highest power of 2 of 32-bit v

v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
v++;

关于algorithm - 四舍五入到最接近的2的幂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4398711/

10-11 18:46