天天看點

求一個正整數中的二進制表達式中有幾個1 && 快速判斷一個數是否為2的幂

求一個正整數中的二進制表達式中有幾個1 && 快速判斷一個數是否為2的幂

Refer:https://www.cnblogs.com/doublesand/p/9626941.html

快速判斷一個數n是否為2的幂

(n & n - 1) == 0

将2的幂次方寫成二進制形式後,很容易就會發現有一個特點:二進制中隻有一個1,并且1後面跟了n個0。如果将這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1;是以将原來的數與減去1後的數字進行與運算後會發現為零。

繼續閱讀