概念:
如果一个数是2的幂,那么它的二进制是这样的: 2 10 4 100 8 1000 16 10000
也就是第一个是1,其他都是0。 然后-1的话: 1 01 4 11 8 111 16 1111
(num&(num-1))==0
就是了。
解释,为什么不是2的幂就不会等于0呢?
比如说3
3 111 2 010
那么是不会等于0的,因为其他位会补位,也就是一定有一个同为1的。
所以可以这样来运算。