이진수를 이용해 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
요 블로그에 비트마스킹 관련 내용이 정말 잘 정리되어있더라구요,
완전 도움 많이 됐습니당 !! 블로그를 빌려 심심한 감사의 인사 드립니다. 😊