代码呈上来:
(1).把一个整数减去1,然后与原整数相与,可以将原整数中最右边的“1”的右边的0全部变为0。最后把所得整数赋值给原整数;
(2).重复执行上述步骤,直到这个整数变为0;
(3).累计(1)执行的次数即为1的个数。
/**
*
* 计算一个整数的二进制表示中1的个数
* @param i
* @return
*/
public static int numberOf1(int i) {
int count=0;
while(i!=0)
{
count++;
i=(i-1)&i;
//字符串不能相与
//Integer.toBinaryString(i-1)&Integer.toBinaryString(i);
}
return count;
}