下面是題面
1.用c++的內置函數__builtin_popcount()
語法:__builtin_popcount(int x),函數會返回一個二進制下x所含的1的個數
2.直接數位枚舉
這是最慢也是暴力做法,寫法也很簡單
用一個while循環把x進行模2,如果是1就計數加1,然后x /=2 就好,這里就不展示代碼了
3.用x &= (x - 1)
這樣用了數在二進制下的規律,可以實現直接從最低位的1開始進行處理,然后更新換上一個1,代碼如下:
?
while (x > 0) {
? ? ? ? x &= (x - 1);
? ? ? ? ones++;
? ? }
這里,ones就是要求的x在二進制下1的個數