题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:把一个整数减去1然后再和原整数做与运算,这样一来就会将原整数最右边的1变为0,循环进行知道整数变为0.不需要把原来的整数先转换为二进制数再看1的个数。
代码:public int NumberOf1(int n) {
int count = 0;
while (n != 0) {
count++;
n = (n-1) & n;
}
return count;
}