[알고리즘] 비트 마스크 기법

April 27, 2021 ( last updated : April 27, 2021 )
비트마스크 bitmask

https://github.com/sneakstarberry/


Abstract

[알고리즘] 비트마스크 기법

[알고리즘] 비트마스크 기법

이진수 표현을 다양하게 쓰는 기법을 비트마스크(bitmask)라고 부릅니다. 비트마스크는 약간의 메모리와 수행시간의 차이를 불러올 수 있습니다. 그리고 무엇보다도 코딩 테스트에 종종 나옵니다.

비트 연산자

비트 마스크릴 사용하기 위해서는 정수의 변수를 비트 별로 조작할 수 있는 비트 연산자를 사용해야합니다. 비트 연산으로는 AND, OR, XOR, NOT, SHIFT 있습니다.

c++ 기준 비트연산자 코드

연산 코드
a,b를 AND 연산 a&b
a,b를 OR 연산 a | b
a,b를 XOR 연산 a^b
a의 NOT 연산 ~a
a를 왼쪽으로 b비트 만큼 시프트 a«b
a를 오른쪽으로 b비트 만큼 시프트 a»b

비트마스크 활용

int bitCount(int x) {
  if(x == 0) return 0;
  return x % 2 + bitCount(x / 2);
}
int 최소원소 = (집합 & -집합);
집합 &= 집합 - 1
for(int 부분집합 = 집합; 부분집합; 부분집합 = ((부분집합-1) & 집합)){}

참고

Originally published April 27, 2021
Latest update April 27, 2021

Related posts :

{# #}