2015-10-30 60 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

相關問題