#include<iostream>usingnamespace std;int n;intlowbit(int x){return x &-x;}intmain(){int res =0;int x;
cin >> x;while(x) x -=lowbit(x),res ++;
cout << res <<" ";return0;}
位运算以及离散化位运算主要说一下lowbit这个函数,返回值为数字二进制中最后一个1例如:10的二进制为1010,lowbit(10) = 10;改函数的具体实现为x & -x,原因是用二进制去与它的补码(反码+1)例如数字x的二进制码为10001000,那么它的反码就为01110111,它的反码就是01111000,那么我们就是让 10001000 & 01111000 ,得到的结果就是1000。我们可以用这个函数去计算出一个二进制数中的1的个数#include &l