1. 程式人生 > >x = x &(x-1)

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) == 優先順序高於 &