位运算移位法
C++:
int max2m(int number) {
int result = number;
result |= (result >> 1);
result |= (result >> 2);
result |= (result >> 4);
result |= (result >> 8);
result |= (result >> 16);
// 2 的 n 次幂 = 2 的 0 次幂 + ... 2 的 n - 1 次幂再加 1
return result + 1;
}
网友评论