解題方案:位操做的技巧css
整數 n 和 n-1(n>0) 作與運算,從其二進制形式來看,能夠消掉 n 的二進制數值中最後1個 「1」 。循環進行,每次消掉1個 「1」 。整數 n 的二進制數值中有多少個 「1」 ,就須要進行多少次循環。ui
class Solution { public: int hammingWeight(uint32_t n) { int num = 0; while(n>0){ n = n&(n-1); num++; } return num; } };
class Solution { public: int hammingWeight(uint32_t n) { return (n > 0) ? 1 + hammingWeight(n & (n - 1)) : 0; } };