一个二进制数 \(x\) 对应着一个子集 \(S\)。
通过判断 x&(1<<i) 是否非 \(0\),可以判断出 \(S\) 中是否包含编号为 \(i\) 的元素。
x&(1<<i)
例如:
for(int i=0;i<n;i++) if(x&(1<<i)) cout<<i<<endl;
for(int S=0;S<(1<<n);S++){ //... }
for(int y=x;y;y=(y-1)&x){ //... }