class Solution {
public:
     int  NumberOf1(int n) {
         int res = 0;
         for (int i=0; i<32; i++){
            if ((n & (1<<i)) != 0) res++;
         }
         return res;
     }
};

n:二进制32位,

1<<i:32位,i位=1,其他位为0

位与操作:

  1. 如果n的i位=1:n&(1<<i) == (1<<i) != 0
  2. 如果如果n的i位=0:n&(1<<i)​ == 0