자료구조&알고리즘/C++
🔍 비트 연산 정리
geminanolja
2025. 3. 6. 20:07
🔍 XOR 연산(^)의 진짜 동작 방식
내가 작성한 XOR 연산 표에 오류가 있었다는 걸 확인했어.
지금부터 올바른 XOR 연산의 원리와 예제를 다시 정리해 줄게!
✅ 4️⃣ 최종 정리
연산 수식 설명 예제 (S = 0b1010, 10) 결과 (S 변경 후)
ind번째 비트 끄기 (0 만들기) | S &= ~(1 << ind) | ind 번째 비트를 0으로 설정 | ind = 1; S &= ~(1 << ind); | S = 0b1000 (8) |
ind번째 비트 XOR (토글) | S ^= (1 << ind) | ind 번째 비트를 반전 (1 ↔ 0) | ind = 2; S ^= (1 << ind); | S = 0b1110 (14) |
최하위 켜져 있는 비트 찾기 | idx = (S & -S) | 최하위 1의 값(2^n)을 찾음 | S = 10 (0b1010); idx = S & -S; | idx = 0b0010 (2) |
크기가 n인 집합의 모든 비트 켜기 | (1 << n) - 1 | n개의 비트를 모두 1로 만듦 | n = 4; S = (1 << n) - 1; | S = 0b1111 (15) |
ind번째 비트 켜기 (1 만들기) | `S | = (1 << ind)` | ind 번째 비트를 1로 설정 | `ind = 1; S |
ind번째 비트가 켜져 있는지 확인 | if (S & (1 << ind)) | ind 번째 비트가 1인지 확인 | ind = 1; if (S & (1 << ind)) | true (1이면 참) |