二进制中1的个数

题目描述

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

一个二进制数,减去1,最右边的1变成0,1后边的0全变成1。比如二进制1100,进去1变成1011。如果再和

原来的数进行与运算,则变成1000,即将末位的1变成0。如此循环知道数值变成0,即可知道二进制数当中包

含多少位1.

public class Solution {
    public int NumberOf1(int n) {
        int count=0;
        while(n!=0){
            n=n&(n-1);
            count++;
        }
        return count;
    }
}
posted @ 2016-02-08 12:38  黄大仙爱编程  阅读(101)  评论(0编辑  收藏  举报