二进制中1的个数

题目描述

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

分析

  • c++和java中二进制默认是补码表示
  • n&(n-1)可以将n中最右边的1变为0
class Solution {
public:
     int  NumberOf1(int n) {
         int cnt = 0;
         while(n){
             n &= (n - 1);
             ++cnt;
         }
         return cnt;
     }
};
posted @ 2020-04-27 20:31  Somnuspoppy  阅读(128)  评论(0)    收藏  举报