이번 포스트에서는 사람이 사용하는 사칙연산(+, *, /, -)이 아닌, 컴퓨터가 사용하는 연산인 "비트 연산"을 이해해볼 것입니다.
컴퓨터의 CPU는 0과 1로 다루어 동작되며, 내부적으로는 비트 연산을 사용하여 덧셈, 뺄셈, 곱셈 등을 계산합니다.
이러한 비트 연산을 파이썬에서 사용하기 위해 비트 연산자와 그 기능에 대해 알아보도록 해요!
비트 연산자의 종류
- AND (&)
- OR (|)
- XOR (^)
- NOT (~)
- Shift (<<, >>)
AND 연산자 (&)
AND 연산자는 두 비트가 모두 1일 때만 결과가 1이 되며, 그 외의 경우에는 0이 됩니다.
a = 0b1101 # 13
b = 0b1011 # 11
result = a & b # 0b1001 (9)
OR 연산자 (|)
OR 연산자는 두 비트 중 하나라도 1이면 결과가 1이 되며, 둘 다 0일 때만 결과가 0이 됩니다.
a = 0b1101 # 13
b = 0b1011 # 11
result = a | b # 0b1111 (15)
XOR 연산자 (^)
XOR 연산자는 두 비트가 서로 다를 때 1이 됩니다.
즉, 하나는 0이고 다른 하나는 1일 때 결과가 1이 됩니다.
a = 0b1101 # 13
b = 0b1011 # 11
result = a ^ b # 0b0110 (6)
NOT 연산자 (~)
NOT 연산자는 단항 연산자로, 해당 비트를 반전(1을 0으로, 0을 1로)시킵니다.
a = 0b0100 # 4
result = ~a # 0b1101 (-5)
여기서 ~a의 결과는 반전된 비트를 이진수로 표현한 것이며, 이는 2의 보수법을 사용하여 -5로 해석됩니다.
이 부분은 2의 보수에 대한 이해가 필요하므로, 자세한 내용은 아래 포스트를 참고하세요!
[Python] 컴퓨터가 음수를 관리하는 방법 (2의 보수)
[Python] 컴퓨터가 음수를 관리하는 방법 (2의 보수)
본 포스트에서는 컴퓨터가 음수를 관리하는 방법에 대해 이야기해 볼 것입니다.컴퓨터는 음수를 "2의 보수"로 관리합니다.2의 보수라니.. 굉장히 생소하죠? 2의 보수가 무엇이고, 컴퓨터는 이것
joungnx123.tistory.com
Shift 연산자 (<<, >>)
쉬프트 연산자는 비트들을 좌우로 이동시키는 연산자입니다.
- 왼쪽 시프트 (<<): 비트를 왼쪽으로 이동시키며, 오른쪽에 빈자리는 0으로 채워집니다.
- 오른쪽 시프트 (>>): 비트를 오른쪽으로 이동시키며, 왼쪽에 빈자리는 부호 비트로 채워집니다.
a = 0b1101 # 13
result_left = a << 2 # 결과는 0b110100 (52)
result_right = a >> 2 # 결과는 0b0011 (3)
비트 연산의 응용
1. 1 << n
- 2^n의 값을 갖는다.
- 임베디드 분야에서 계산을 빠르게 하기 위해 사용된다.

2. i & (1 << n)
- i의 n번째 비트가 1인지 아닌지 확인
'Study > Python' 카테고리의 다른 글
[Python] itertools 라이브러리 사용법 (조합, 순열, 데카르트 곱) (0) | 2024.11.13 |
---|---|
[Python] 출력 성능 비교: 매번 출력 vs 결과 저장 후 한 번에 출력 (0) | 2024.09.10 |
[Python] 컴퓨터가 음수를 관리하는 방법 (2의 보수) (0) | 2024.08.31 |
[Python] 예외(exception)와 예외처리(exception handling) (1) | 2024.08.08 |