标签:一个 val 语言 1的个数 解决 推出 多少 代码 bsp
样例:给定 32 (100000),返回 1;给定 5 (101),返回 2;给定 1023 (111111111),返回 9
解决方法:num & (num-1) 可以每次将最右边的1消去,经过x次运算即可。
原理:分类讨论、归纳总结
int countBit(int num){
int count = 0;
while(num != 0){
num = num & (num-1);
count++;
}
return count;
}
C语言代码如下(关注点在val最低位的变化)
int odd(int x){
int val = 0;
while(x){
val ^= x;
x >>= 1;
}
return val & 0x1;
}
标签:一个 val 语言 1的个数 解决 推出 多少 代码 bsp
原文地址:https://www.cnblogs.com/doublesand/p/9626941.html