class Solution {
public:
     int  NumberOf1(int n) {
         int ans = 0;
         int mask = 1;
         while(mask != 0){
             if(mask & n) ++ans;
             mask <<= 1;
         }
         return ans;
     }
};

---这个方法很好的解决了负数在机器码里存储符号位为1的问题,将mask掩码从右向左移位。

(反之,如果是将数据n从左向右移位,会让最高位补0)

相关文章:

猜你喜欢
  • 2021-11-19
  • 2021-11-29
  • 2022-02-16
相关资源
相似解决方案