该问题要求编写一个以整数作为输入的函数,如果整数是2的幂,则返回true。我想同时使用按位与运算符和逻辑移位来编写函数,以实践这些概念。我尝试遍历许多输入示例,并认为我的代码可以正常工作,但是当Leetcode使用测试案例“ n = 2”时,我的代码返回false而不是true。
我的思路是,如果最低有效位与1进行AND运算等于0(我试图对位进行掩码,并且仅对n的LSB执行AND操作),那么n就有可能成为2.因此,我将n右移一位,并评估n是否为1(然后是,它是2的幂,然后将true返回给该函数)。如果n不为1,并且LSB与1的ANDed不为0,则意味着n绝对不是2的幂-因此我退出了while循环并返回false。
任何人都可以帮助您找出问题所在吗?
bool isPowerOfTwo(int n){
while(n>0)
{
if(n==1)
return 1;
else if(n&1 == 0)
n = n>>1;
else
break;
}
return 0;
}