考查位运算,算是比较经典的语法题.
首先应该把符号整数转换为无符号整数.a's'd 注意差别: 有符号数,右移高位补1,那么循环就是死循环 无符号数,右移高位补0.
cpp
class Solution { public: int hammingWeight(uint32_t n) { int s = 0; while(n)s+=n&1,n>>=1; return s; } };