파이썬 비트 연산자란?
비트 연산자(Bitwise Operator)는 숫자를 이진수 비트(bit) 단위로 해석하여 비트별로 직접 연산을 수행하는 연산자입니다. 파이썬에서는 정수형 데이터에 대해 비트 연산을 지원하며, 플래그(flag) 처리, 비트 마스킹, 임베디드 프로그래밍 등 저수준 작업에서 자주 활용됩니다.
예를 들어 a = 60, b = 13이라고 할 때, 두 값의 이진수 표현은 각각 다음과 같습니다.
a = 0011 1100
b = 0000 1101
이 두 변수를 피연산자로 사용했을 때 주요 비트 연산의 결과는 아래와 같습니다.
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
파이썬 비트 연산자의 종류
| 번호 | 연산자 및 설명 | 예시 |
|---|---|---|
| 1 | & (AND) 두 피연산자 모두에 해당 비트가 존재할 경우에만 결과에 복사합니다. | (a & b) = 12 → 0000 1100 |
| 2 | | (OR) 어느 한쪽 피연산자에라도 해당 비트가 존재하면 결과에 복사합니다. | (a | b) = 61 → 0011 1101 |
| 3 | ^ (XOR) 한쪽 피연산자에만 비트가 설정되어 있고 양쪽 모두에는 없을 때만 복사합니다. | (a ^ b) = 49 → 0011 0001 |
| 4 | ~ (NOT, 보수) 단항 연산자로, 모든 비트를 반전(flipping)시킵니다. | (~a) = -61 → 부호 있는 정수이므로 2의 보수 형태인 1100 0011 |
| 5 | << (왼쪽 시프트) 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동시킵니다. | (a << 2) = 240 → 1111 0000 |
| 6 | >> (오른쪽 시프트) 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동시킵니다. | (a >> 2) = 15 → 0000 1111 |
비트 연산자 예제
다음은 파이썬 3 기준으로 작성한 전체 예제 코드입니다.
#!/usr/bin/python3
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b # 12 = 0000 1100
print('Line 1 - c의 값:', c)
c = a | b # 61 = 0011 1101
print('Line 2 - c의 값:', c)
c = a ^ b # 49 = 0011 0001
print('Line 3 - c의 값:', c)
c = ~a # -61 = 1100 0011
print('Line 4 - c의 값:', c)
c = a << 2 # 240 = 1111 0000
print('Line 5 - c의 값:', c)
c = a >> 2 # 15 = 0000 1111
print('Line 6 - c의 값:', c)
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Line 1 - c의 값: 12
Line 2 - c의 값: 61
Line 3 - c의 값: 49
Line 4 - c의 값: -61
Line 5 - c의 값: 240
Line 6 - c의 값: 15
참고: 이진수 확인 방법
파이썬에서는 내장 함수 bin()을 사용하면 정수의 이진수 표현을 손쉽게 확인할 수 있습니다.
print(bin(60)) # 0b111100
print(bin(13)) # 0b1101
마무리
비트 연산자는 일상적인 산술 연산보다 사용 빈도가 낮지만, 조건 상태를 하나의 정수로 압축해 관리하거나 성능이 중요한 알고리즘에서 매우 유용하게 사용됩니다. 각 연산자가 비트 단위에서 어떻게 동작하는지 위 예제를 직접 실행하며 익혀두면, 이후 네트워크 프로그래밍, 암호화, 게임 개발 등 다양한 분야에서 큰 도움이 됩니다.