비트란?

컴퓨터에서 사용하는 데이터의 최소 단위

0과 1

 

비트마스크란?

정수의 이진수 표현을 자료 구조로 쓰는 기법

집합을 메모리/시간 효율적으로 표현 가능하게 해줌

ex) 집합의 i번째 요소가 존재한다면 1, 존재안하면 0으로 표시 (비트마스킹)

 

비트 연산자 종류

-and 연산 &

-or 연산 |

-xor 연산 ^

 둘 중 하나만 1일 때 1

-not 연산 ~

-shift 연산 <<, >>

 왼쪽, 오른쪽으로 비트 이동, 빈자리는 0으로

 

비트마스크 연산 활용

-부분집합 i번째에 요소 삽입(i번째 비트 1로)

bit=bit | 1<<i

-부분집합 i번째 요소 삭제(i번째 비트 0으로)

bit=bit & ~(1<<i)

-부분집합 i번째 요소 조회

if ( bit& (1<<i)==1 ) i는 1

else i는 0

-부분집합 i번째 요소 토글(0->1,1->0)

bit=bit ^ ( 1<<i )

 

비트 마스크 사용시 주의할 점

-비교 연산자보다 비트 연산자의 우선 순위가 낮음

-오버플로우 문제

 

비트마스크의 장점

1. 빠른 수행속도

   O(1)

2. 코드가 짧음

   집합 연산들을 비트연산자를 활용해 한 줄로 표현 가능

3. 적은 메모리 사용량

4. 집합을 배열의 인덱스로 활용할 수 있음

 

 

참고사이트

https://rebro.kr/63

https://jooncco.com/algorithms/bitmask/

https://kim6394.tistory.com/246

https://velog.io/@cchloe2311/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B9%84%ED%8A%B8%EB%A7%88%EC%8A%A4%ED%82%B9Bit-Masking

 

+ Recent posts