這道題的主要的目的是檢測整數n是否是2的正整數次冪,要解這道題首先需要注意2點
(1)2的正整數冪的值必須是大於0的整數所以小於等於0的數據需要排除。
(2)真正要使用的解決方法是使用掩碼來計算,大家都知道2的n次冪的數據二進制形式中只會出現1一次,當這個值減去1的話就可以確保這個數據的出現1的位置之後的位置的數據都是1而包括出現1的位置及之前的數據都是0所以進行與計算的時候值為0,我們就使用這個特性來計算這個值是否為2的整數次冪。
函數如下:
if(n<=0)
{
return false;
}
int a=n-1;
return a&n?false:true;
閱讀更多 kuikui 的文章