笨方法:
用这个数对2求余,看结果是0还是1
二进制的方法:
首先来看一下2的n次方的二进制形式,除了最高位是1外其他位都是0
1:1 0:0
2:10 1:1
4:100 这些数减一 3:011
8:1000 7:0111
16:10000 15:01111
可以看到对应的 a & (a - 1)= 0
通过上面的逻辑去判断,代码如下:
bool isWantNum(int num)
{
return (num > 0) && ((num & (num - 1)) == 0);
}