剑指Offer——二进制中1的个数

Question

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

Solution

  • n & (n - 1) 会将n中最右边那个1置为0,置零了多少次,就有多少个1.

Code

class Solution {
public:
     int  NumberOf1(int n) {
         int sum = 0;
         while (n) {
             n = n & (n - 1);
             sum++;
         }
         return sum;
     }
};
posted @ 2017-06-30 23:39  清水汪汪  阅读(111)  评论(0编辑  收藏  举报