2015-10-30 33 views
0

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

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

您必须用其他符号代替8'*'符号才能使该功能正常工作。
我的最好的办法是这样的:

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

不幸的是这是错误的,因为有9个符号在这里...
任何想法?

+0

https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 – sehe

回答

0

为什么分配给n?只要删除=并且你少了一个字符。它会创建一个临时的,逻辑不会改变。

+0

好吧,我认为'&'的优先级高于' - ' 谢谢! –

+0

如果'n == 0'呢? – wrangler

+0

然后用重复的函数调用八个星号:) – LogicStuff

相关问题