思路 从最后一位开始,逐位比较 如果n&1==1,表示n的最后一位为1 每次比较完,右移一位(本题n是无符号数,Java中>>>是逻辑右移) 代码 public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int res=0; while(n!=0){ if((n&1)==1) res++; n=n>>>1; } return res; } } 复杂度 时间复杂度 log2n 空间复杂度 1 结果