Krafton Jungle/3. TIL

[WEEK01] 비트마스킹

munsik22 2025. 3. 20. 14:15

비트마스킹(Bitmasking)란?

비트마스킹(Bitmasking)은 정수를 이진수(Binary)로 표현하여, 비트 단위 연산을 통해 데이터를 효율적으로 처리하는 기법이다. 주로 부분 집합 문제, 최적화 문제, 플래그(Flag) 관리 등에 사용된다. 특히 CPU나 메모리의 크기가 작은 임베디드 시스템 및 OS의 경우에서 유용하게 사용된다.

비트 연산자

비트마스킹에서 사용되는 주요 연산자는 다음과 같다.

연산자 설명
& (AND) 두 비트가 모두 1일 때만 1
` (OR)  하나라도 1이면 1
^ (XOR) 서로 다른 경우 1, 같으면 0
~ (NOT) 비트를 반전
<< (Left Shift) 비트를 왼쪽으로 이동 (2배 증가)
>> (Right Shift) 비트를 오른쪽으로 이동 (1/2배 감소)

비트마스킹 활용 예제

특정 비트 확인하기

(num & (1 << i)) != 0   # num의 i번째 비트가 1인지 확인

특정 비트 켜기 (1로 만들기)

num |= (1 << i)

특정 비트 끄기 (0으로 만들기)

num &= ~(1 << i)

특정 비트 토글 (반전)

num ^= (1 << i)

비트마스킹 활용 사례

  • 부분 집합 구하기
  • 중복 없는 상태 관리 (예: 방문 체크)

정리

비트마스킹은 효율적인 연산을 위해 알고리즘 문제에서 자주 활용되는 기법이다. 특히 부분 집합 생성, 상태 관리, 최적화 문제 등에서 강력한 도구가 될 수 있다. 기본적인 연산을 익히고 다양한 문제에 적용해보면 도움이 될 것이다.