왼쪽에는 2진수(비트)로 표현된 숫자들이 나열되어 있음.
각 숫자는 십진수 값과 대응되도록 정리되었어.
이진수(Binary) 십진수(Decimal)
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
✅ 비트 마스킹에서 n개의 원소가 있을 때, 2^n개의 경우를 표현할 수 있음.
예를 들어, 3비트라면 2^3 = 8개의 상태를 가질 수 있어.
오른쪽에서는 비트 연산을 통한 상태 체크가 설명되어 있음.
1, 1, 1, 0 → True, True, True, False
즉, 특정 비트가 1이면 해당 값이 활성화(True), 0이면 비활성화(False)라는 의미!비트 마스크를 이용한 부분 집합 표현 또는 특정 상태 저장
bool isSet(int n, int k) {
return (n & (1 << k)) != 0; // k번째 비트가 1인지 확인
}
int main() {
int num = 6; // 6 = 0b110
cout << isSet(num, 0) << endl; // false (0)
cout << isSet(num, 1) << endl; // true (1)
cout << isSet(num, 2) << endl; // true (1)
}
➡ 입력값 num = 6 (110)의 비트를 검사했을 때:
즉, 1이면 활성화(True), 0이면 비활성화(False) 라는 의미!
✔ 비트 마스크는 상태를 효율적으로 저장하고, 연산을 빠르게 수행할 수 있는 강력한 기법이다! 🚀
🔍 ~ (비트 NOT) vs ^ (비트 XOR) 연산 차이점 (0) | 2025.03.05 |
---|---|
비트 마스킹 : 비트 연산자 (0) | 2025.03.05 |
📌 완전 탐색(Brute Force)과 원복(Backtracking)의 차이점 (0) | 2025.03.04 |
🚀 재귀를 활용한 완전 탐색 vs 백트래킹 비교! (0) | 2025.03.04 |
조합과 순열 의 수 : 4개중 2개 구하기 비교 (0) | 2025.03.03 |