题目
Given an integer, write a function to determine if it is a power of two.
判断一个数是否是2的次方。
思路
即判断此整数的二进制表示中是否只存在一个 1.因此,思路就是不停的迭代,看是否此整数中只有一个 1.
public boolean isPowerOfTwo(int n) {
if(n<=0){
return false;
}
while(n>0){
if(n==1){
return true;
}
int reminder=n%2;
if(reminder!=0){
return false;
}
n>>=1;
}
return true;
}
思路二:一行代码
看别人的思路,发现确实经典。
如下:
public boolean isPowerOfTwo(int n) {
return n>0&&((n&(n-1))==0);
}
n&n-1确实是来判断整数n的二进制表示中是否只有一个 1 。