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

2021-07-11 03:51:40 字數 486 閱讀 8344

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

(1)簡單法:

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

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

**實現:

int   count (int n )

int i ;

for (i = 0; n ; )

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

(2快速法:

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

就有多少個1.

**實現:

int   count (int n )

int i ;

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

求乙個數的二進位制表示中1的個數

原文 實現1 使用按位與和移位操作符,逐位進行統計。需要注意的是,對於有符號的右移操作符號位如何處理是不確定的,因此我們在進行移位操作前要將有符號型轉換為無符號型。int bitcount int n 2 9 m m 1 10 11 12 return count 13 實現2 利用 n n 1 能...

二進位制 求乙個數的二進位制表示中1的個數

題目 求乙個正整數x中1的個數 思考 二進位制是乙個01串。統計該串中1的個數。方法1 將x按照樸素的方法轉化成二進位制串,如果x的某二進位制位上為1,則res 求得最後x中1的個數。int x while x return res res即是x的二進位制數中1的個數用這種方法求,時間複雜度為o n...

乙個數的二進位制表示中1的個數 10

實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如,將9表示成二進位制為1001,有2位是1,因此如果輸入數字9,該函式輸出2。如果讓我們將乙個十進位制的數轉換成二進位制的表示,我們就會不停的模除模除2取它的餘數,因此,就可以用這樣的方法解決 include using namespa...