Using O(1) time to check whether an integer n is a power of 2
.
Example
For n=4
,
return true
;
For n=5
,
return false
;
思路:2的冪次方(2^n)的二進制表達法只有一位爲1,其他位都爲0,而(2^n-1)則是和(2^n)對應位置正好不一樣
例如8的二進制1000,7的二進制0111
因爲二者可以進行按位與運算,因爲按位與運算只有兩位同時爲1時,結果才爲1,否則爲0
注意:參加運算的兩個數據,按二進制位進行“與”運算,運算規則:0&0=0; 0&1=0; 1&0=0; 1&1=1
class Solution {
/*
* @param n: An integer
* @return: True or false
*/
public boolean checkPowerOf2(int n) {
if(n<=0){
return false;
}
return (n&(n-1))==0?true:false;
}
};
關於位運算:點擊打開鏈接