[算法]判断一个数是不是2的N次方

时间:2023-03-09 02:08:43
[算法]判断一个数是不是2的N次方

如果一个数是2^n,说明这个二进制里面只有一个1。除了1.

a  = (10000)b

a-1 = (01111)b

a&(a-1) = 0。

如果一个数不是2^n,

说明它的二进制里含有多一个1。

a = (1xxx100)b

a-1=(1xxx011)b

那么 a&(a-1)就是 (1xxx000)b,

而不会为0。

所以可以用这种方法判断一个数是不2^n。