專欄漫畫算法筆記之判斷一個數是否爲2的整數次冪

分析

若是一個整數是2的整數次冪,那麼當它轉化成二進制時,只有最高位是1,其餘位都是0。git

2的整數次冪一旦減1,它的二進制數字就所有變成了1github

,這時候若是用原數值(2的整數次冪)和它減1的結果進行按位與運算,也就是n &(n1)ui

0和1按位與運算的結果是0,因此凡是2的整數次冪和它自己減1的結果進行與運算,結果都一定是0。反之,若是一個整數不是2的整數次冪,結果必定不是0.cdn

那麼很簡單,對於一個整數n,只須要計算n&(n1)的結果是否是0。這個方法的時間複雜度只有O(1)blog

代碼實現

完整代碼

gist.github.com/furuiyang07…get

相關文章
相關標籤/搜索