二进制中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; } }