聘我网

新概念招聘3.0

最高效地实现判断一个数字是否为2的次方

vote up0vote downstar
function IsPowerOfTwo($x)
{
    return ($x & ($x - 1)) == 0;
}

不信邪的尽管测试一下! 前提是正整数

 

1 个答复

vote up0vote down

或许这种方法更好理解一些:

function IsPowerOfTwo($x)
{
    return ($x & -$x) == $x;
}

对于一般情况,如3,可以这样:

while (n % 3 == 0) {
    n /= 3;
}
return n == 1;
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.