철학과 학생의 개발자 도전기

비트마스크 (BitMask) 본문

알고리즘

비트마스크 (BitMask)

Younghun 2024. 4. 2. 10:20

1. 개요

  • 정의: 비트마스크는 정수의 이진수 표현을 사용하여, 각 비트가 특정 상태나 조건을 나타내도록 하는 기법이다.
  • 활용 예: 설정 옵션, 접근 권한, 기능 플래그 등 다양한 상태를 효율적으로 저장하고 관리한다.

2. 특징

  • 비트마스크로 집합을 표현하는 방식은 다음과 같다
    • k번째 원소 포함여부: A & (1 << k) != 0
    • k번째 원소 추가: A | (1 << k)
    • k번째 원소 삭제: A & ~(1 << k)
    • 전체집합 : (1 << N) - 1
    • 공집합 : 0

3. 코드

public class BitmaskExample {
    public static void main(String[] args) {
        final int OPTION_A = 1 << 0; // 0001
        final int OPTION_B = 1 << 1; // 0010
        final int OPTION_C = 1 << 2; // 0100
        final int OPTION_D = 1 << 3; // 1000

        int settings = 0;

        // 옵션 A와 C를 켭니다.
        settings |= (OPTION_A | OPTION_C);

        // 옵션 B가 켜져 있는지 확인합니다.
        boolean isOptionBEnabled = (settings & OPTION_B) != 0;

        // 옵션 C를 끕니다.
        settings &= ~OPTION_C;

        System.out.println("Settings: " + Integer.toBinaryString(settings));
        System.out.println("Is Option B enabled? " + isOptionBEnabled);
    }
}

'알고리즘' 카테고리의 다른 글

다익스트라 (Dijkstra)  (1) 2024.04.02
최소 공통 조상 (LCA)  (0) 2024.04.02
최장 증가 부분수열 (LIS)  (1) 2024.04.02
그래프 탐색 (DFS/BFS)  (0) 2024.03.19
이분 탐색 (Binary Search)  (0) 2024.03.19