자료구조/알고리즘 기초수학

비트마스크 (Bit Mask)

휴먼코딩 2024. 8. 12. 15:55

비트마스크 (Bit Mask)


비트 연산을 통해 집합의 원소를 나타내거나 조작한다.

집합, 조합, 상태 추적 등에 사용되는데

비트마스크는 각 비트가 집합의 원소를 나타내는 방식으로, 정수의 비트로 집합을 표현하고 조작할 수 있다.

 

비트마스크의 기본 개념

비트와 정수:

  • 비트는 이진수에서 0 또는 1의 값을 가지며,
  • 정수의 이진 표현에서 각 비트를 집합의 원소를 나타내는 플래그로 사용된다.
  • 예를 들어, 8비트 정수는 0부터 255까지의 값을 가질 수 있으며, 각 비트가 집합의 원소를 나타낸다.
  1. 비트마스크 정의:
    • 비트마스크는 비트 연산을 사용하여 집합의 원소를 포함하거나 제외하는 데 사용된다.
    • 특정 비트를 켜거나 끄는 방식으로 집합의 상태를 조작할 수 있다.
    • 예를 들어, 8비트 비트마스크는 다음과 같은 형식으로 집합의 원소를 나타낸다. 00000101 (정수 5).

비트마스크 연산

비트 설정 (Set Bit):

  • 특정 비트를 1로 설정하여 집합의 원소를 추가한다
int mask = 0b00000000; // 초기 비트마스크
int position = 3; // 4번째 비트 (0부터 시작)
mask |= (1 << position); // 비트 설정 후 mask는 0b00001000이 된다.

 

비트 클리어 (Clear Bit):

  • 특정 비트를 0으로 설정하여 집합의 원소를 제거한다.
int mask = 0b00001000; // 비트마스크
int position = 3; // 4번째 비트
mask &= ~(1 << position); // 비트 클리어 후 mask는 0b00000000이 된다.

 

비트 토글 (Toggle Bit):

  • 특정 비트의 값을 반전시킨다.
int mask = 0b00001000; // 비트마스크
int position = 3; // 4번째 비트
mask ^= (1 << position); // 비트 토글 후 mask는 0b00000000이 된다.

 

비트 확인 (Check Bit):

  • 특정 비트가 1인지 0인지 확인한다.
int mask = 0b00001000; // 비트마스크
int position = 3; // 4번째 비트
boolean isSet = (mask & (1 << position)) != 0; // 비트가 설정되어 있으면 true

비트마스크 사용 예시

  1. 집합 표현:
    • 비트마스크를 사용하여 집합의 원소를 나타낸다
    • 예를 들어, 정수 13은 이진수로 00001101이며, 집합 {0, 2, 3}을 나타낸다.
  2. 상태 추적:
    • 프로그램에서 상태를 비트마스크로 표현하여 여러 상태를 한 정수로 관리한다.
    • 예를 들어, 게임에서 여러 상태를 비트마스크로 저장하여 상태의 조합을 처리한다.
  3. 조합 생성:
    • 비트마스크를 사용하여 집합의 모든 부분 집합을 생성하거나 특정 조합을 표현할 수 있다.
    • 각 비트가 집합의 원소를 포함하거나 제외하는 방식으로 조합을 생성한다.