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

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

思路:
n &(n-1)把n的最右边的1去掉,用count++计算1的个数
 eg: 101 & 100 = 100
 
 1 class Solution {
 2 public:
 3      int  NumberOf1(int n) {
 4          int count = 0;
 5             while(n!=0){
 6                 count++;
 7                 n = n&(n-1);
 8             }
 9              
10             return count;
11      }
12 };

 

posted on 2017-06-19 20:18  olive_gyr  阅读(189)  评论(0编辑  收藏  举报