본문 바로가기

알고리즘

BitMask

bitMask 구조

word = 2byte = 16bit

위 그림은 word 데이터 타입이라 가정했으며 16bit 이므로 16개의 0으로 표시 했습니다. bitMask 알고리즘은 이 0과 1로만 표시 할 수 있는 16개의 데이터를 다루는 것을 의미합니다.

bitMask 연산자

& = and 연산자

| = or 연산자

^ = xor 연산자

~ = not 연산자

bitMask 연산

bitMask 값을 0으로 가정

(bitMask & 0) 연산은 모든 비트를 0과 AND 연산해서 0으로 만드는 연산 입니다.

bitMask 값을 0으로 가정

~(bitMask) 연산은 0의 값을 1로 1의 값은 0으로 만드는 연산 입니다.

bitMask 값을 0으로 가정

(bitMask | (1 << 3)) 연산은 3번째 자리 값을 1로 설정하는 연산 입니다. 이와 비슷하게 (bitMask & (1 << 3)) 는 3번째 비트의 값이 1인지 체크하는 연산 입니다.

bitMask 값을 0으로 가정

(bitMask | ~(bitMask) 또는 (bitMask ^ ~(bitMask) 연산은 모든 비트의 값을 1로 만드는 연산 입니다.

bitMask의 비트를 모두 1로 가정

(bitMask >> 1) 연산은 모든 비트의 값을 오른쪽으로 한칸씩 이동 시키면서 15번째 비트의 값은 0으로 채우며 0번째 비트의 값은 버립니다.

bitMask의 비트를 모두 1로 가정

(bitMask << 1) 연산은 모든 비트의 값을 왼쪽으로 한칸씩 이동 시키면서 0번째 비트의 값은 0으로 채우며 15번째 비트의 값은 버립니다.

bitMask 활용

bitMask는 메모리를 극단적으로 활용하는 연산입니다. int 데이터 타입을 선언할때 보통은 값 하나만 담는 변수라고 보지만 비트 연산을 알게되면 32bit를 모두 활용하여 bool [32]와 같은 역할로 활용 할 수 있게 됩니다.

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

Topological Sorting  (0) 2024.06.22
Binary Search  (0) 2024.06.18
Dynamic Programming  (0) 2024.06.17
BackTracking  (0) 2024.06.16
BFS, DFS  (0) 2024.06.14