题目:
Given an integer, write a function to determine if it is a power of two.
翻译:
给定一个数字,写一个函数判断它是否为2的幂。
思路:
给定一个数字n,若它是2的幂,那么转换为二进制的表示为 1 后跟随若干 0 ,于是可以利用 n & (n-1) 来判断 n 是否为2的幂。若 n & (n-1) 结果为0,则 n 为2的幂,返回true;反之,不是,返回false。
C++代码(Visual Studio 2017):
#include "stdafx.h"
#include <iostream>
using namespace std;
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n <= 0)
return false;
return !(n&(n - 1));
}
};
int main()
{
Solution s;
int n = 16;
bool result;
result = s.isPowerOfTwo(n);
cout << result;
return 0;
}