AcWing 两个简单的位运算操作

//是柱状数组的一个基操作
//返回n的最后一位1:lowbit(n) = n & -n
//比如  x=1010  那么返回10    x=101000  返回1000
#include<bits/stdc++.h>
using namespace std ;
int lowbit(int x) {
    return x&-x;;
}
int main() {
    int n;
    cin>>n;
    while(n--) {
        int x;
        cin >>x;
        int res=0;
        while(x) x-=lowbit(x),res++; 
        cout<<res<<" ";  // 二进制中1的个数
    }
}
//
//n的二进制表示中第k位是几    k的下标:个位是第0位,十位是第1位。。。 
//比如 n为15,那么二进制位1111 
//思路,①先把第k位移到最后一位,也就是把n的第k位数字右移到个位,n>>k 
//②,取个位,就是x&1   合起来就是n>>k&1   也可以认为是输出二进制表示方法
#include<bits/stdc++.h>
using namespace std ;
int main()
{
    int n=10;
    for(int k=3;k>=0;k--) cout<<(n>>k&1);
    return 0;
 } 
 
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11777854.html