题解 | #查找输入整数二进制中1的个数# 高效位运算
查找输入整数二进制中1的个数
https://www.nowcoder.com/practice/1b46eb4cf3fa49b9965ac3c2c1caf5ad
C++ 位运算基本操作(本质还是:遍历法)
#include <iostream>
using namespace std;
int main() {
int cnt = 0;
size_t val;
while(cin>>val){
cnt = 0;
while(val){
if(val & 1) cnt++;
val >>= 1;
}
cout << cnt << endl;
}
return 0;
}
C++ 位运算高效思路(有几个一就判断几次!)
#include <iostream>
using namespace std;
int main() {
int cnt = 0;
size_t val;
while(cin>>val){
cnt = 0;
while(val){
val &= (val - 1);
cnt++;
/*
示例一:
0000 0010 & 0000 0001 => 1
示例二:
0001 1111 & 0001 1110 => 1
=> 0001 1110 & 0001 1101 => 2
=> 0001 1100 & 0001 1011 => 3
...
由上示例可以看出每次运算都可以消掉一个 1!故:1 的个数就是该方式的循环次数!
*/
}
cout << cnt << endl;
}
return 0;
}

小米集团公司氛围 378人发布
查看22道真题和解析