이진수 표현을 자료구조로 쓰는 기법이다.
비교 연산자 → 비트 연산자의 우선순위
int noPizza = 0; // 공집합
int fullPizza = (1 << 20) - 1; // 꽉찬 피자
0부터 19까지의 번호를 가진 토핑을 가진 피자집이 있다.
20개의 토핑을 모두 올린 피자는 아래와 같이 표현할 수 있는데, 20개의 0을 가진 비트를 만들고 1을 뺴면 20개의 비트가 모두 켜진 수를 얻을 수 있다.
p번째 있는 토핑을 추가하고 싶으면, 현재 토핑 목록인 toppings
에 p비트만 켜진 정수를 비트별 OR 처리하면 된다
toppings |= (1 << p);