这不是一种测试数字是2的幂的方法吗?
boolean isPowerOfTwo(int n) {
return (n%2==0);
}
答案 0 :(得分:1)
你确定你正在检查2的力量吗?相反,被检查可被2整除。如果你是认真的,请使用一块蛋糕片段
return n > 0 && ((n & -n) == n);
第二种方式,
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整除