Given an integer, write a function to determine if it is a power of two.
Solution 1
Idea: divide n by 2, and check the residual.
class Solution {
public:
bool isPowerOfTwo(int n) {
while (n!=0 && n%2==0){
n = n/2;
}
return n==1;
}
};
Solution 2
Idea: 1 -- 1, 2 -- 10, 4 -- 100,... the highest bits are all 1. If minus 1, the left bit become 0 ,and others become 1s. Do bit logic and, should be 0;
class Solution {
public:
bool isPowerOfTwo(int n) {
return (n>0) && ((n&(n-1))==0);
}
};