一、一个正整数二进制表示中“1”个数 java代码实现
//算法一----快速法
public Class Solution
{
public int NumberOf1(int n)
{
int count=0;
while(n!=0)
{
count++;
n=n&(n-1);
}
return n;
}
}
分析
这种方法速度比较快,其运算次数与输入n的大小无关,只与n中1的个数有关。如果n的二进制表示中有k个1,那么这个方法只需要循环k次即可。其原理是不断清除n的二进制表示中最右边的1,同时累加计数器,直至n为0。
如果一个整数不为0,那么这个整数至少有一个1;
把这个整数减去1,即把整数最