這個問題來自求職面試...
使用這個模板來編寫一個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