Write a function that takes an unsigned integer and returns the number of ’1‘ bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11‘ has binary representation 00000000000000000000000000001011
, so the function should return 3.
求一个32位无符号整形数二进制表达中‘1‘的个数。
解决: n = n & (n - 1) 可以把二进制中最后一个1变成0
class Solution { public: int hammingWeight(uint32_t n) { int res = 0; while (n) { ++res; n = n & (n - 1); } return res; } };