[算法]判断一个数是不是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。

 

posted @ 2016-06-01 14:50  南水之源  阅读(2381)  评论(1)    收藏  举报