输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
方法一:用二级制n和n-1最后一位与运算,然后
public class Solution {
public int NumberOf1(int n) {
int sum = 0;//计数器
while(n != 0){
//每次把n的二进制最后一个1变为0,
n &= n - 1;//n = n & (n-1)
sum++;
}
return sum;
}
}
方法二:用二进制位的最后一位和1与运算,如果不为0,则sum++
public class Solution {
public int NumberOf1(int n) {
int sum = 0;
for(int i=1;i<=32;i++){
if((n&1)==1){
sum++;
}
n = n>>1;
}
return sum;
}
}