这个问题来自求职面试...
使用这个模板来编写一个C++函数来检查一个正整数是否是二的幂。检查一个正整数是否为2的幂的最短方法
bool p(int n)
{
return ********;
}
您必须用其他符号代替8'*'符号才能使该功能正常工作。
我的最好的办法是这样的:
bool p(int n)
{
return !(n&=n-1);
}
不幸的是这是错误的,因为有9个符号在这里...
任何想法?
这个问题来自求职面试...
使用这个模板来编写一个C++函数来检查一个正整数是否是二的幂。检查一个正整数是否为2的幂的最短方法
bool p(int n)
{
return ********;
}
您必须用其他符号代替8'*'符号才能使该功能正常工作。
我的最好的办法是这样的:
bool p(int n)
{
return !(n&=n-1);
}
不幸的是这是错误的,因为有9个符号在这里...
任何想法?
为什么分配给n
?只要删除=
并且你少了一个字符。它会创建一个临时的,逻辑不会改变。
https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 – sehe