解法:位运算的使用
这里需要就是了解位运算的使用了 lowbit函数
x & -x
这种算法其实是利用了计算机的补码性质。计算机为了表示负数,将对应的正数二进制全部取反再加一。
lowbit是为了获取一个数的二进制中最低位的1对应的值,比如lowbit(10(10)) = 10(2),因为10的二进制表达是1010。
在这个基础上,如果这个数是二的幂次方的话,其二进制就只有一个1,因此使用这个操作后得到的值就是本身,所以就很简单就能判断。
代码实现:
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n>0&&(n&-n)==n)
return true;
else
return false;
}
};
标签:10,return,运算,二进制,lowbit,次方 From: https://www.cnblogs.com/FJCLJ/p/18161993