题目来源:
leetcode题目,网址:LCR 133. 位 1 的个数 - 力扣(LeetCode)
解题思路:
重复利用 n&(n-1) 将 n 最右边一个 1 消除直至 n 为 0,返回循环次数即可。
解题代码:
public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int res=0;while(n!=0){n=n&(n-1);res++;}return res;}
}
总结:
官方题解给出了两种解法 。第一种是循环检查二进制位,x&2^i。第二种是位运算优化,x&(x-1)。