判断一个数是否是2的幂

前言

概念:

如果一个数是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的。

所以可以这样来运算。

posted @ 2020-03-16 15:34  敖毛毛  阅读(915)  评论(0编辑  收藏  举报