Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 비트 연산자 완벽 가이드 – 종류, 동작 원리, 예제 코드

파이썬 비트 연산자란?

비트 연산자(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

마무리

비트 연산자는 일상적인 산술 연산보다 사용 빈도가 낮지만, 조건 상태를 하나의 정수로 압축해 관리하거나 성능이 중요한 알고리즘에서 매우 유용하게 사용됩니다. 각 연산자가 비트 단위에서 어떻게 동작하는지 위 예제를 직접 실행하며 익혀두면, 이후 네트워크 프로그래밍, 암호화, 게임 개발 등 다양한 분야에서 큰 도움이 됩니다.