如何求一個數的二進制表示中1的個數

求一個數的二進制中1的個數方法很多,在這裏我總結最近學到的兩種簡單好用的方法:

(1)簡單法:

由於右移運算符的特性,每向右移動一位,相當於二進制的最低位就被消除高位補零,其功能相當於該數每次除以2。

利用上述原理,每次讓二進制的最低位和1進行與運算.若該位是1,則記一次數.然後右移1位;繼續上述運算,直到爲零。

代碼實現:

int   count (int n )

{

      int i ;

     for (i = 0; n ; )

    {

         if(n&1==1) i++;

  n>>=1;

    }

 return i;

}

(2快速法:

之所以叫快速法,是因爲其在求解時並不關注二進制的位數,其的效率由該二進制中1的個數決定.即每次讓其最低位爲1的歸零,能進行多少次,說明該數的二進制表示中

就有多少個1.

代碼實現:

int   count (int n )

{

      int i ;

     for (i = 0; n ; i++)

    {

         n&=(n-1);

    }

 return i;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章