본문 바로가기
OS 운영체제

bitmask (비트마스크)

by yororing 2024. 9. 5.

00 개요

  • 회사에서 코드분석 중 비트 연산(bitwise operation)을 사용하여 값의 유효성을 검사함
  • 특정 비트 패턴을 검사하는 방식은 컴퓨터 과학 및 시스템 프로그래밍에서 자주 사용됨
    • 예) 플래그 값의 유효성 확인, 권한 체크, 또는 상태 플래그의 유효성 검사 등
  • 이에 대한 정리!

01 비트마스크 (bitmask)란

1. 정의

  • 이진수(bit)로 구성된 값을 사용하여 특정 비트들을 선택 또는 수정하는 기법
  • 주로 비트 단위의 논리 연산(AND, OR, XOR, NOT)을 통해 특정 플래그나 설정을 제어하는 데 사용됨

2. 주요 개념

1) 비트 연산

연산 종류 설명
AND 연산 (&) 두 비트가 모두 1일 때만 1을 반환
특정 비트를 선택 또는 확인 시 사용
OR 연산 (|) 두 비트 중 하나라도 1이면 1을 반환
특정 비트를 설정할 때 사용
XOR 연산 (^) 두 비트가 서로 다를 때 1을 반환
특정 비트를 토글(반전)할 때 사용
NOT 연산 (~) 모든 비트를 반전시킴

2) 비트마스크 사용 예시

  • 플래그 설정: 여러 설정을 하나의 정수 값에 저장할 때 비트마스크 사용. 각 비트는 특정 설정을 나타내며, 이를 통해 다양한 설정을 한 번에 저장 가능
  • 비트 추출: 특정 비트를 선택하여 그 값이 설정되어 있는지 확인 가능

3. 용도

  • 상태 관리: 다수의 플래그를 하나의 정수로 관리할 때 사용 가능
  • 하드웨어 제어: 특정 비트를 이용하여 하드웨어의 특정 기능을 제어할 때 사용 가능
  • 데이터 압축: 작은 크기의 데이터를 비트 단위로 관리하여 공간을 절약할 때 사용 가능

4. 예시

1) 플래그 설정 예시 

  • 8비트의 플래그를 설정하고 관리한다고 가정:
    • 0000 0001 (1): 첫 번째 플래그 설정
    • 0000 0010 (2): 두 번째 플래그 설정
    • 0000 0100 (4): 세 번째 플래그 설정
  • 만약 첫 번째와 세 번째 플래그를 설정하고 싶다면, 두 값을 OR 연산으로 결합 가능
    • 0000 0001 | 0000 0100 = 0000 0101 (5)

2) 비트 추출 예시

  • 값 0101 0010이 있을 때 세 번째 비트가 설정되었는지 확인하려면, AND 연산 사용하여 확인 가능 
    • 0101 0010 & 0000 0100 = 0000 0000 
  • 결과가 0이므로 세 번째 비트는 설정되지 않았음을 확인

3) 비트마스크로 특정 비트 설정 예시

  • 네 번째 비트를 켜려면 (1로 설정) OR 연산 사용하여 설정 가능
    • 0100 0010 | 0000 1000 = 0100 1010