题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:1、java中有个方法可将任意整数转换成二进制表示;
2、使用按位与,将n与n-1相与,n中有多少个1就能进行与多少次。
代码:
public int NumberOf1(int n) {
int count=Integer.toBinaryString(n).replace("0","").length();
return count;
}
public int NumberOf2(int n) {
int count=0;
while(n!=0) {
n=n&(n-1);
count++;
}
return count;
}