x = x &(x-1)


判斷一個數(x)的二進制含有幾個1

int func(x) 
{ 
    int countx = 0; 
    while(x) 
    { 
          countx ++; 
          x = x&(x-1); 
     } 
    return countx; 
}  

假定x = 9999。 答案:8

思路:將x轉化為2進制,看含有的1的個數。

 


判斷一個數(x)是否是2的n次方

int func(int x)
{
    if( (x&(x-1)) == 0 )
        return 1;
    else
        return 0;
}

注:

(1) 如果一個數是2的n次方,那么這個數用二進制表示時其最高位為1,其余位為0。

(2) == 優先級高於 &


免責聲明!

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



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