两个人的力量未通过测试

时间:2016-11-13 16:13:49

标签: java algorithm

这不是一种测试数字是2的幂的方法吗?

boolean isPowerOfTwo(int n) {
        return (n%2==0);
    }

3 个答案:

答案 0 :(得分:1)

你确定你正在检查2的力量吗?相反,被检查可被2整除。如果你是认真的,请使用一块蛋糕片段

return n > 0 && ((n & -n) == n);

第二种方式,

enter image description here

private static boolean powerOf2(int num)
{
  if(num <= 0){
   return false;
  }

  while(num > 1)
  {
   if(num % 2 != 0)
   {
    return false;
   }
   num = num / 2;
  }
  return true;
}

答案 1 :(得分:1)

该函数检查整数是否为偶数(即可被2整除),而不是整数是否为2的幂。

要检查数字是否为2的幂,您应该查看它的位。强权为2的int将一位设置为1,其他所有设置为0。

boolean isPowerOf2(int i) {
    return Integer.bitCount(i) == 1;
}

答案 2 :(得分:0)

%是模运算符,表示除法后的余数。你的方法检查int n是否可被2整除