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

    public int NumberOf1(int n) {
        int ans = 0;
        while (n != 0) {
            ans += (n & 1);
            n >>>= 1;
        }
        return ans;
    }
}