二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
public int NumberOf1(int n) {
int count=0;
if(n!=0){
int flag=1;
while(flag!=0){
if ((n & flag) != 0) {
count++;
}
flag=flag<<1;
}
}
return count;
}
牛客思路:
将所给的数和1进行按位与操作,如果相与是1,则count++,否则为0,然后1在左移一位,和更高位进行与操作,由低向高位进行判断。相当于10进制向2进制转换的过程,不用自己转,已经转好了,直接和1相与判断1的个数就行