파이썬에서 세로 막대(|)의 의미
파이썬에서 세로 막대(|)는 비트 OR(bitwise OR) 연산자를 나타냅니다. 두 정수 객체에 이 연산자를 적용하면, 각 숫자를 이진수로 변환한 후 자릿수별로 OR 연산을 수행한 결과를 반환합니다.
비트 OR 연산의 기본 원리
비트 OR 연산은 두 비트 중 하나라도 1이면 결과가 1이 되고, 둘 다 0일 때만 0이 됩니다.
- 0 | 0 = 0
- 0 | 1 = 1
- 1 | 0 = 1
- 1 | 1 = 1
예제 코드
>>> a=4
>>> bin(a)
'0b100'
>>> b=5
>>> bin(b)
'0b101'
>>> a|b
5
>>> c=a|b
>>> bin(c)
'0b101'
결과 분석
위 예제에서 a=4는 이진수로 100, b=5는 이진수로 101입니다. 두 수를 비트 OR 연산하면 다음과 같습니다.
100 (4)
| 101 (5)
-------
101 (5)
각 자릿수를 비교하면 첫째 자리(오른쪽)는 0과 1이므로 1, 가운데 자리는 0과 0이므로 0, 왼쪽 자리는 1과 1이므로 1이 됩니다. 따라서 최종 결과는 이진수 101, 즉 십진수 5입니다.
참고: 복합 할당 연산자 |=
세로 막대와 등호를 조합한 |=는 비트 OR 복합 할당 연산자입니다. x |= y는 x = x | y와 동일하게 동작하며, 기존 변수에 비트 OR 연산 결과를 바로 저장할 때 유용합니다.