OVREVIEW
位运算
AcWing801.二进制中1的个数
- 求n的第k位数字:
n >> k & 1
- 返回n的最后一位1:
lowbit(n) = n & -n
#include<iostream>
using namespace std;
int lowbit(int x) { return x & -x;}
int main() {
int n;
scanf("%d", &n);
while (n--) {
int x;
int res = 0;
scanf("%d", &x);
while (x) {
x -= lowbit(x);//每次减去x的最后一位1
res++;
}
printf("%d", res);
}
return 0;
}
tips:文章内容参考acwing算法刷题课程,题解图示内容及代码根据老师课程、以及自己对知识的理解,进行二次整理和部分补充,仅供学习参考使用,不可商业化。