检查二进制的每一个位
- 逐个位值进行检查:
eg:
求0-2的每一个组合数
for(int i=0;i<(1<<3);i++){ //g共有2^3种可能
for(int j=0;j<3;j++){ //逐个位置
if(i&(1<<j))
cout<<j;
}
}
- 速度更快的方式
//采用kk=kk&(kk-1)的方式
eg:
计算变量kk的二进制数中1的个数
#include<bits/stdc++.h>
using namespace std;
int main()
{
int kk=30;
int num=0;
while(kk){
kk=kk&(kk-1);
num++;
}
cout<<num;
return 0;
}