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

파이썬에서 >>와 << 연산자란? 비트 시프트 연산자 쉽게 이해하기

파이썬에서 <<>> 기호는 각각 왼쪽 시프트(left shift)오른쪽 시프트(right shift) 연산자로 정의됩니다. 이들은 비트(bitwise) 연산자에 속하며, 숫자 객체를 이진수 비트 형태로 표현한 뒤, 두 번째 피연산자에 지정한 자릿수만큼 비트 패턴을 왼쪽 또는 오른쪽으로 이동시키는 역할을 합니다.

왼쪽 시프트 연산자(<<)

<< 연산자는 비트 패턴을 왼쪽으로 이동시킵니다. 오른쪽 끝의 최하위 비트(least significant bits)에는 빈자리가 생기며, 그 자리에는 0이 채워집니다.

>>> a = 60
>>> bin(a)
'0b111100'
>>> b = a << 2
>>> b
240
>>> bin(b)
'0b11110000'

위 예제를 보면 숫자 60의 이진수 표현은 111100입니다. 여기에 2비트만큼 왼쪽으로 시프트하면 11110000, 즉 십진수 240이 됩니다. 오른쪽 두 자리가 0으로 채워진 것을 확인할 수 있습니다.

참고로 왼쪽 시프트는 값에 2의 거듭제곱을 곱하는 것과 같은 효과를 냅니다. 즉, a << na × 2ⁿ과 동일한 결과를 가집니다.

오른쪽 시프트 연산자(>>)

반대로 >> 연산자는 비트 패턴을 오른쪽으로 이동시킵니다. 왼쪽 끝의 최상위 비트(most significant bits)에는 0이 채워지고, 오른쪽 끝에서 밀려난 비트는 사라집니다.

>>> a = 60
>>> bin(a)
'0b111100'
>>> b = a >> 2
>>> b
15
>>> bin(b)
'0b1111'

숫자 60(111100)을 2비트 오른쪽으로 시프트하면 1111, 즉 십진수 15가 됩니다. 마찬가지로 오른쪽 시프트는 값을 2의 거듭제곱으로 나누는 것과 같으므로, a >> na ÷ 2ⁿ(정수 나눗셈)와 동일한 결과를 냅니다.

정리

  • <<: 비트를 왼쪽으로 n칸 이동 → 값이 2ⁿ배 커짐
  • >>: 비트를 오른쪽으로 n칸 이동 → 값이 2ⁿ분의 1로 작아짐
  • 두 연산자 모두 내부적으로 이진수 비트 단위로 동작하는 비트 연산자임