Given an integer, write a function to determine if it is a power of two.
思路:
2这个数字很特殊,因为计算机使用的数制是二进制。所以可以尝试通过位操作来完成判断。
2的幂的数字特点就是有且只有一个1,比如二进制1000,10这些。我发现1000-1 = 111和1000直接按位取反是一样的,但是C++语言的取反会把前面的数位都取反,运算结果不可能正确,因此换中方式,可以利用 1000 与 111做与运算为0这一特点来判断。
解:
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n <= 0)
return false;
return !(n & n-1);
}
};