解题方案:位操做的技巧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; } };