비트 연산자란?
- 비트 연산은 데이터를 이진수(0과 1)의 비트 단위로 직접 조작하는 연산
- 컴퓨터 내부의 데이터는 비트로 저장되므로 연산 속도가 빠름
비트 연산자의 종류
- AND 연산: & 기호로 표기, 두 비트가 모두 1일 때 1, 나머지는 0
- OR 연산: | 기호로 표기, 두 비트 중 하나라도 1일때 1, 나머지는 0
- XOR 연산: ^ 기호로 표기, 두 비트가 다르면 1, 같으면 0
- NOT 연산: ~ 기호로 표기, 비트를 0은 1로, 1은 0으로 반전
- 왼쪽 시프트: << 기호로 표기, 비트들을 왼쪽으로 이동하고 오른쪽은 0으로 채움
- 오른쪽 시프트: >> 기호로 표기, 비트들을 오른쪽으로 이동하고 왼쪽은 0으로 채움(음수의 경우 1로 채움)
비트 연산자의 특징
- CPU에서 직접 지원하는 연산으로 연산 속도가 빠름
- 하나의 정수로 여러 개의 Boolean데이터를 저장할 수 있으므로 메모리 사용이 효율적임
비트 연산자의 활용
# 짝수/홀수 판별
def is_even(n):
return (n & 1) == 0
# n = 7일때
# 7 = 111 (이진수)
# 1 = 001 (이진수)
# 111 & 001 = 001 -> 홀수
# n = 6일때
# 6 = 110 (이진수)
# 1 = 001 (이진수)
# 110 & 001 = 000 -> 짝수
# 즉, 가장 왼쪽 비트가 1인지 확인하므로 홀수인지 짝수인지 확인할 수 있음
# 2의 거듭 제곱 연산
print(1 << 3)
# 001 << 3 = 1000
# 1 * 2^3 = 8
print(3 << 2)
# 011 << 2 = 1100
# 3 * 2^2 = 12
# 2로 나누기 연산 (n //2)
print(5 >> 1)
# 101 >> 1 = 10
# 5 // 2 = 2