題目:請實現乙個函式,輸入乙個整數,輸出改數的二進位制表示中1的個數常規解法
思路:通過與運算來判斷某乙個是否為1。該數先和1相與,如果結果為1,則第一位為1,然後1左移一位與該數相與,判斷第二位是否為1 ,以此類推,即可判斷該數的二進位制中有多少個1。
**:
int
getnumofoneinbinary1
(int num)
flag = flag <<1;
}return count;
}
由於無符號整型有32位,其中的while迴圈要迴圈32次才能結束。所以可以考慮另一種解法。
高階版思路:某個整數減一與該數相與,可以式該數最左邊的位數變0。
**:
int
getnumofoneinbinary2
(int num)
return count;
}
面試題15 二進位制中1的個數
題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。includeusing namespace std int numof1 int n flag flag 1 return count int main ...
面試題15 二進位制中1的個數
請實現乙個函式,輸入乙個整數,輸出該整數的二進位制表示中1的個數。例如,把9表示成二進位制是1001,有2個是1。因此,如果輸入9,則該哈數輸出2。如果輸入負數,則統計該數字二進位制補碼中的1的個數。先判斷二進位制中最右邊一位是不是1 接著把輸入的整數右移一位,此時原來處於從右邊數起第二位被移到最右...
面試題15 二進位制中1的個數
題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如,把9表示成二進位制是1001,有2位是1。因此,如果輸入9,則該函式輸出2。可能引起死迴圈的解法 先判斷整數二進位制表示中最右邊一位是不是1 接著把輸入的整數右移一位,此時原來處於從右邊數起的第二位被移到最右邊了,再判斷是不是...