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

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

本文关键字:方法 整数 是否 检查      更新时间:2023-10-16

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

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

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

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

不幸的是,这是错误的,因为这里有9个符号
有什么想法吗?

为什么分配给n?只要去掉=,就少了一个字符。它将创建一个临时的,相反,逻辑不会改变。