题目:输入一个整数,求该整数的二进制表达中有多少个 1。
例如输入 10,由于其二进制表示为 1010,有两个 1,因此输出 2。
思路:
编程之美原题..
m&(m-1),每次与操作都会消减二进制中的一个1。假设m=5,二进制表示为101
m&m-1: 101
&100
=100
public class Q28 {
public static void main(String[] args) {
int num = 10;
int sum = 0;
while(num!=0)
{
sum++;
num = num & (num-1);
}
System.out.println(sum);
}
}