转自:http://blog.csdn.net/shinanhualiu/article/details/49004139
用 O(1) 时间检测整数 n 是否是 2 的幂次。
样例
n=4
,返回 true
;
n=5
,返回 false
.
solution: 在
O(1)
时间内判断一个整数是否为2的幂次,只能使用位操作。因为2的幂次数其二进制表示中1的个数只有一个而其他的数则没有这情况。而2的幂次减1除了那位为0其他位为1。
例如:
2 =
(10)2
—-> 1 =
(01)2
4 =
(100)2
—-> 3 =
(011)2
8 =
(1000)2
—-> 7 =
(0111)2
public class CheckPowerOf2 {
public boolean checkPowerOf2(int n){
if(n<=0)
return false;
return (n&(n-1))==0;
}
}