191. 位1的个数

发布时间 2023-11-30 15:46:53作者: CrossAutomaton

191. 位1的个数

2021年3月22日每日一题

0ms代码,o(*≧▽≦)ツ笑

\(-n\&n\),其作用是返回\(n\)二进制最低位的\(1\)所对应的\(2\)的幂

学会这个可以去学一下树状数组了

原理是:

​ 原码在最低位\(1\)之前都是\(0\),取反码则是最低位\(0\)之前都是\(1\)
​ 补码=反码\(+1\),反码因为进位,最低位的1位置必然和原码相同。

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int ans=0;
        while(n){
     n-=-n&n;
           ans++;
        }
        return ans;
    }
};