Bit Mask

플래그 설계 흐름

각 옵션에 고유한 비트 자리를 배정하고, OR, AND, NOT을 조합해 상태를 작게 저장하고 빠르게 판정한다.

4개 옵션을 한 정수에 배치

settings = 0101
0 OPTION_D
1 OPTION_C
0 OPTION_B
1 OPTION_A

1. 설정

|

마스크 비트가 1인 자리만 켜고 나머지는 유지한다.

settings |= OPTION_A; 0100 | 0001 = 0101

2. 검사

&

필요한 자리만 남겨 0인지 아닌지 확인한다.

settings & OPTION_B 0101 & 0010 = 0000

3. 해제

&~

마스크를 반전한 뒤 AND로 해당 자리만 끈다.

settings &= ~OPTION_A; 0101 & 1110 = 0100
Design Tip

플래그 값은 1, 2, 4, 8처럼 한 비트만 켜진 값으로 잡아야 서로 겹치지 않는다. 그래서 보통 1 << n 형태로 만든다.