1 public int NumberOf1(int n) {
2 // 统计1的个数
3 int count = 0;
4 // flag表示二进制的1
5 int flag = 1;
6 // 1、flag最多只能有32位1,超过32位之后,
7 // 2、最高位的1就会移出去,就变成0
8 while (flag != 0) {
9 // 如果n的二进制位当中某一位是1,则与的结果就不是0
10 if ((n & flag) != 0) {
11 count++;
12 }
13 // 每次flag往左边移动一位
14 flag = flag << 1;
15 }
16 return count;
17 }