📍 비트 연산자
기호 | 기능 | 설명 |
a & b | 비트 AND | a와 b의 비트를 AND 연산 |
a | b | 비트 OR | a와 b의 비트를 OR 연산 |
a ^ b | 비트 XOR | a와 b의 비트를 XOR 연산 |
~a | 비트 NOT | a의 비트를 뒤집음 |
a << b | 비트 LEFT SHIFT | a의 비트를 b번 왼쪽으로 이동 |
a >> b | 비트 RIGHT SHIFT | a의 비트를 b번 오른쪽으로 이동 |
✅ AND
bin(0b1101 & 0b1001)
# '0b1001'
연산자 | 이진수 | 십진수 |
& | 1101 | 13 |
1001 | 9 | |
result | 1001 | 9 |
✅ OR
bin(0b1101 | 0b1001)
# '0b1101'
연산자 | 이진수 | 십진수 |
| | 1101 | 13 |
1001 | 9 | |
result | 1101 | 13 |
✅ XOR
bin(0b1101 ^ 0b1001)
# '0b0100'
연산자 | 이진수 | 십진수 |
^ | 1101 | 13 |
1001 | 9 | |
result | 0100 | 4 |
✅ NOT
bin(~0b1101)
# '-0b1110'
연산자 | 이진수 | 십진수 |
~ | 1101 | 13 |
result | -1110 | -14 |
연산 순서
1. 1101 -> -0010 (부호 및 숫자 뒤집기)
2. -0010 -> -1101 (부호 제외 다시 뒤집기)
3. -1101 -> -1110 (1 더해주기)
✅ <<
bin(0b1101 << 1)
# '0b11010'
연산자 | 이진수 | 십진수 |
<< | 1101 | 13 |
1 | 1 | |
result | 11010 | 26 |
왼쪽으로 한칸씩 이동 = 13 * (2의 1승)
✅ >>
bin(0b1101 >> 1)
# '0b110'
연산자 | 이진수 | 십진수 |
>> | 1101 | 13 |
1 | 1 | |
result | 110 | 6 |
왼쪽으로 한칸씩 이동 = 13 * (2의 -1승)
✅ 응용
SHIFT의 경우 2의 제곱 수 문제에서 사용할 수 있다.
[프로그래머스 Level 0] 세균 증식(Python)