枚举非空子集

for (int j = i; j; j = (j - 1) & i) {
    // ...
}

枚举超集

for (int j = i; j < (1 << n); j = (j + 1) | i) {
    // ...
}