내가 작성한 XOR 연산 표에 오류가 있었다는 걸 확인했어.
지금부터 올바른 XOR 연산의 원리와 예제를 다시 정리해 줄게!
연산 수식 설명 예제 (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이면 참) |
🔍 최하위 켜져 있는 비트 찾기 (S & -S) (0) | 2025.03.06 |
---|---|
🔍 최하위 켜져 있는 비트 찾기 (S & -S) (0) | 2025.03.06 |
🔍 비트마스크 : &= ~(1 << ind)와 ^= (1 << ind) 연산 (0) | 2025.03.06 |
2의 보수 (Two's Complement) (0) | 2025.03.05 |
비트 연산자 ^ (XOR), << (왼쪽 시프트), >> (오른쪽 시프트) (0) | 2025.03.05 |