알고리즘

비트 연산자

양밀루 2025. 7. 4. 13:19

기본 비트 연산자

OR 연산 (|)

// 둘 중 하나라도 1이면 1
9 | 20
// 01001 (9)
// 10100 (20)
// ----- OR
// 11101 (29)

AND 연산 (&)

// 둘 다 1이어야 1
9 & 20
// 01001 (9)
// 10100 (20)
// ----- AND
// 00000 (0)

XOR 연산 (^)

// 서로 다르면 1, 같으면 0
10 | 12
// 1010 (10)
// 1100 (12)
// ---- XOR
// 0110 (6)

NOT 연산 (~)

// 0은 1로, 1은 0으로
~1010 = 0101

시프트 연산 (<<, >>)

1 << 2  # 1을 왼쪽으로 2칸 이동
# 001 → 100 (4가 됨)

8 >> 2  # 8을 오른쪽으로 2칸 이동
# 1000 → 0010 (2가 됨)

 

 

비트 조작 기본 패턴

특정 비트 설정 (Set)

// n번째 비트를 1로 설정
number |= (1 << n)

10 |= (1 << 2)  // 10 | 4 = 14
1010 | 0100 = 1110

특정 비트 클리어 (Clear)

// n번째 비트를 0으로 클리어
number &= ~(1 << n)

15 &= ~(1 << 2)  // 15 & ~4 = 15 & 11 = 11
1111 & 1011 = 1011

특정 비트 토글 (Toggle)

// n번째 비트 반전
number ^= (1 << n)

예시:
10 ^= (1 << 2)  // 10 ^ 4 = 14
1010 ^ 0100 = 1110

특정 비트 확인 (Check)

// n번째 비트가 1인지 확인
(number & (1 << n)) != 0

15 & (1 << 2) = 15 & 4 = 4 ≠ 0  // true
1111 & 0100 = 0100 ≠ 0

'알고리즘' 카테고리의 다른 글

[Swift] 순열 구현하기 feat.재귀  (0) 2025.06.19