思路:通过 n & 1 来统计当前 的最低位是否为 ,同时每次直接对 进行右移并高位补 0。 当 代表,我们已经将所有的 统计完成。 这样的做法,可以确保只会循环到最高位的 。
public int NumberOf1(int n) {
int ans = 0;
while (n != 0) {
ans += (n & 1);
n >>>= 1;
}
return ans;
}
}