```cpp
if (x == (x&-x))
```
by 文文殿下 @ 2019-07-17 08:25:24
```cpp
!(x&(x-1))
```
by qwaszx @ 2019-07-17 08:26:57
@[Sakura_Tears](/space/show?uid=62573) 应该可以
如果一个数是2的k次方,那么这个数对应的二进制表示中只有一位是1,其余都是0.
因此判断一个数是否是2的k次方,可以转换为判断这个数对应的二进制表示是否只有一位为1.
所以num&(num-1)的运算结果为0
by 江南小巫 @ 2019-07-17 08:27:17
@[江南小巫](/space/show?uid=30224) 非常感谢
by zzqDeco @ 2019-07-17 08:32:33
@[文文殿下](/space/show?uid=64618) 非常感谢
by zzqDeco @ 2019-07-17 08:32:37
@[qwaszx](/space/show?uid=22136) 非常感谢
by zzqDeco @ 2019-07-17 08:32:41
@[qwaszx](/space/show?uid=22136) @[Sakura_Tears](/space/show?uid=62573) (这种还得特判 0
by tiger0133 @ 2019-07-17 08:43:17
* 好像都得特判 $0$(
by tiger0133 @ 2019-07-17 08:43:34
@[⚡cdecl⚡](/space/show?uid=28762) 0也是2^k
by zzqDeco @ 2019-07-17 08:47:03
@[Sakura_Tears](/space/show?uid=62573) ???
by tiger0133 @ 2019-07-17 08:47:23