본문 바로가기
Algorithm/내용 정리

비트마스킹에 대해 알아보자

by emgp 2024. 9. 6.

이진수를 이용해 boolean배열을 표현할 수 있다.

 

예를들어 4는 100, 2는 010

1은 true, 0은 false로 나타낼 수 있음

boolean 배열의 크기가 크다면 비트마스킹을 사용하는게 효율적일 수 있음

하나의 숫자를 만들어서 비트 연산자를 통해 탐색, 수정 작업을 하는 것!

 

비트연산자

& 비트단위로 AND연산
| 비트 단위로 OR 연산
^ 비트 단위로 XOR연산
비교하려는 두 비트가 다르면 true, 같으면 false
~ 피연산자의 모든 비트 반전
<< 피연산자의 비트 열을 왼쪽으로 이동
a << b는 a * 2 ^ b와 같은 의미
>> 피연산자의 비트 열을 오른쪽으로 이동
a >> b는 a / (2 ^ b)와 같은 의미

 

2의 보수

음수를 표현할 때 2의 보수법을 이용함

해당 양수의 모든 비트를 반전한 수에 1을 더하는 방식

-value = ~value + 1 이므로 ~value = -(value + 1)

 

 

비트연산자 활용법. # idx번째 비트 끄기

idx번째 비트끄기 S &= ~(1 << idx)
idx번쨰 비트 XOR연산 S ^= (1 << idx)
최하위 켜져있는 비트 찾기 idx = (S & -S)
크기가 n인 집합인 모든 비트 켜기 ( 1 << n) - 1
idx번째 비트 켜기 S |= (1 << idx)
idx번째 비트가 켜져 있는지 확인 if(S & (1 << idx) != 0)

 

 

출처

https://blog.naver.com/jhc9639/222310927725

요 블로그에 비트마스킹 관련 내용이 정말 잘 정리되어있더라구요,

완전 도움 많이 됐습니당 !! 블로그를 빌려 심심한 감사의 인사 드립니다. 😊