判断一个是否是2的N次方
例:n=16,判断n是否是2的N次方
1:0 1
2:1 0
3:0 1 1
4:1 0 0
7:0 1 1 1
8:1 0 0 0
15:0 1 1 1 1
16:1 0 0 0 0
从上面可以看出如果n是2的N次方,则存在n & (n-1) == 0
伪代码如下:
int n = 32;
if (n & (n-1) == 0) {
true
} else {
false
}
判断一个是否是2的N次方
例:n=16,判断n是否是2的N次方
1:0 1
2:1 0
3:0 1 1
4:1 0 0
7:0 1 1 1
8:1 0 0 0
15:0 1 1 1 1
16:1 0 0 0 0
从上面可以看出如果n是2的N次方,则存在n & (n-1) == 0
伪代码如下:
int n = 32;
if (n & (n-1) == 0) {
true
} else {
false
}