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