题目:
题解一:转换二进制
1.求10进制数的二进制串
2.累计1的数量
public int getCountFromBinary(int number) {
int count = 0;
while (number > 0) {
int mod = number % 2;
if (mod == 1) {
count++;
}
number /= 2;
}
return count;
}
时间复杂度:O(n)
题解二:位运算
1.与1做与运算,只有末位为1的数与1做与运算结果才为1
2.每计算一次,数字右移一位,直到为0
3.统计1的数量
public int getCountFromBinary(int number) {
int count = 0;
while (number > 0) {
count += number & 1;
number >>= 1;
}
return count;
}
时间复杂度:O(n)