题解|轻松解决!!!二进制中1的个数
题目
文章图片
代码实现
#includeint main(){int n;
scanf("%d",&n);
while(n--){int count = 0;
int x;
scanf("%d",&x);
while(x){x ^= x & -x;
//x -= x & -x;
count ++;
}
printf("%d ",count);
}
return 0;
}
分析
lowbit(x)是x的二进制表达式中最低位的1所对应的值。
int lastone =-x & -x 算出最后一位1
【题解|轻松解决!!!二进制中1的个数】然后再循环即可,x -= lastone 保险使用 x ^= lastone
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- ACSL|ACSL 美国计算机科学联赛 2016-2017 R4 摩天大楼-Skyscraper 题解
- Spark|Spark 数据倾斜及其解决方案
- 解决SyntaxError:|解决SyntaxError: invalid syntax
- Spectrum|Spectrum 区块偶尔停止同步问题排查与解决笔记