快速判斷一個數是否是2的次方以及是幾次方(二進制)


判斷是否是2的次方

將一個2的冪次方數表示成二進制數,發現它是100000...,如果將這個數減一,那個1會變成0,0會變成1

因此這個數與其減一后的數進行與運算結果為0.

最快速的方法:

      (number & number - 1) == 0

  1000
     & 0111
        -------
        0000

計算這個數是2的幾次冪

int log2(ll a) {
    int count = 0;
    while (1) {
        if (a >>= 1)
            count++;
        else
            break;
    }
    return count;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM