Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

혦's STACK

비트마스크( bit mask ) 본문

개발 지식/알고리즘

비트마스크( bit mask )

UNIMOM 2018. 5. 1. 21:55
비트마스크.md

비트마스크 (bit mask)

 

 

1. bit mask 란?

정수의 이진수 표현을 통해 비트 단위(bitwise) 연산을 할수 있는 변수를 비트마스크(bit mask) 라고 한다.

  • 특정 비트가 켜져있다. = '비트가 1이다.'
  • 특정 비트가 꺼져있다. = '비트가 0이다.'

 

비트마스크(bit mask)를 사용한다면 빠르고 간결한 연산이 가능하며, 메모리를 절약할 수 있다. 만약 자료형의 데이터 범위가 정해져 있다면 오버플로우나 언더플로우에 주의해야 합니다.

비트 연산을 할 때에는 우선순위를 주의하여 괄호를 치는 것을 추천합니다.

 

2. 관련 연산 및 표현

  • 비트연산자

    AND 연산

    A & B : 둘다 1일 경우에는 1, 나머지는 0이다.

     

    OR 연산

    A | B : 둘다 0일 경우에는 0, 나머지는 1이다.

    XOR 연산

    A ^ B : 둘다 같은 값일 경우에는 0, 다른 값이면 1이다.

    NOT 연산

    ~A : 0일 경우에는 1, 1일 경우에는 0이다.

    SHIFT 연산

    A << B : A의 각 자릿수의 비트를 좌측으로 B만큼 이동한다. 오른쪽에는 0으로 채운다.

     

    A >> B : A의 각 자릿수의 비트를 우측으로 B만큼 이동한다. 왼쪽에는 0으로 채운다.

     


     

 

  • 연산의 응용

    공집합 과 전부 true인 집합

    공집합 : 0 으로 표현

    A = 0

    전부 true 일 때 : full set일 경우 1을 자릿수만큼 왼쪽으로 시프트 한 후에 1을 빼줍니다.

    (1<< 자릿수) - 1

     

    다양한 응용

    추가 : 특정 원소만 true로 전환

    (집합) |= (1<<특정원소번째) : set |= (1<<p);

    포함 여부 확인 : 특정 원소가 true인지 확인

    (집합) & (1<<특정원소번째) : set & (1<<p);

    삭제 : 특정원소를 false로 전환

    (집합) &= ~(1<<특정원소번째) : set &= ~(1<<p);

    토글 : 특정원소가 false 이면 true로 true면 false로 변환

    (집합) ^= (1<< 특정원소번째) : set ^= (1<<p);

    집합연산

    - 합집합 : A | B

    - 교집합 : A & B

    - 차집합 : A & ~ B

 

 

 


Comments