检查正整数是否为 2 的幂的最短方法

shortest way to check if a positive integer is a power of two

这个问题来自求职面试...
使用此模板编写一个 C++ 函数来检查正整数是否为 2 的幂。

bool p(int n)
{
    return ********;
}

您必须将 8 个“*”符号替换为其他符号才能使该功能正常工作。
我最好的方法是:

bool p(int n)
{
    return !(n&=n-1);
}

可惜打错了,因为这里有9个符号...
有什么想法吗?

为什么分配给 n?只需删除 = 即可少一个字符。它会创建一个临时的,逻辑不会改变。