面試題10 求二進位制中1的個數

2021-07-02 22:45:27 字數 396 閱讀 6342

題目:輸入乙個整數,求該整數的二進位制表達中有多少個1。例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。

思路:可以使用位運算的與&運算,只有1&1=1,其他情況都為0,所以可以設定乙個flag初始為1,如果是8位的,二進位制位0000 00001,讓n與flag做與運算,判斷結果是否為1,為1計數,不為1,將flag左移一位,變為0000 0010,繼續判斷n的下一位。

#include using namespace std;

int numberofone(int n)

flag=flag<<1;//flag左移一位,用來判斷n的下一位是否為1

} return count;

}int main()

{ int num=-10;

cout<

面試題10 二進位制中1的個數

方法一 判斷整數二進位制表示中最右邊一位是否為1,接著把整數右移一位判斷倒數第二位是否為1,以此類推,直到整數變成0為止。include stdafx.h include using namespace std int countof1 int n n n 1 return ncount int t...

面試題10 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。解法一 可能引起死迴圈 public int numberof1 int n return count 思路 如果乙個整數與1做與運算的結果是1,表示該整數...

面試題10 二進位制中1的個數

面試題10 特殊的情況是右移運算,m n。如果數字是乙個無符號數值,用0填補最左邊的n位。如果是有符號數值,用數字的符號位填補最左邊的n位。左移m 題目 實現乙個函式,輸入乙個整數,輸出該數中二進位制表示中1的個數。整數右移移位和除以2是等價的,但除法的效率比移位運算低得多。常規解法是 將n與1做與...