原题链接:https://leetcode-cn.com/problems/power-of-two/
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
题目分析:我分成两种情况,一种是n<=0;一种是n>0
(1)当为第一种情况时,直接return false即可
(2)当为第二种情况时,我用的是二进制的与(&)运算------同1得1
2^0=1-----0001 2^1=2--------0010 2^2=4------0100 2^3=8------1000
0-----------0000 1--------0001 3------0011 7-------0111
1&0=0 2&1=0 4&3=0 8&7=0
1&(1-1) 2&(2-1) 4&(4-1) 8&(8-1)
通过上面的分析我们可以看出,如果n是2的次幂的话,那么n&(n-1)的结果为0,那么我们可以得出,如果n&(n-1)=0的话那么n就是2的次幂,否则则不是
class Solution {
public boolean isPowerOfTwo(int n) {
if(n<=0){
return false;
}
return (n&(n-1))==0?true:false;
}
}