題目
分析
題目要求爲判斷一個數是否爲2的冪。
一種基本的方法就是不斷的對2取餘直到該數變爲1,如果所有的取餘結果都爲0,則爲2的冪。
比較簡單的方法:2的冪用2進製表示只有一個1,比如16= 2^4 用2進製表示則爲 10000,那麼它減一則爲 01111
這兩個數取按位與操作一定爲0
題解
解法1
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n == 0)
return false;
else if(n == 1)
return true;
while(n != 1){
if(n % 2 != 0)
return false;
n /= 2;
}
return true;
}
};
解法2
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1) )== 0;
}
};