C/C++에서 사용할 수 있는 비트마스크 기법
공집합은 당연하게도 0으로 표현가능하다. 그렇다면 꽉 찬 집합은?
int full = (1<<n)-1;
mask |= (1<<p);bool include= (mask & (1<<p));mask &= ~(1<<p);mask ^= (1<<p);int added = (a|b);
int intersection = (a&b);
int removed = (a&~b);
int toggled = (a^b);int bitCount(int x) {
if(x==0) return 0;
return x%2 + bitCount(x/2);
}
// 또는 gcc 에서 제공하는 함수 사용
int bitCount(int x) {
return __builtin_popcount(x);
}int minimum = __builtin_ctz(x);
// 최하위 비트 직접 구하기
int firstTopping = (topping & -toppings);toppings &= (toppings - 1);for(int subset = pizza; subset; subset=((subset-1) & pizza))