파이썬 비트연산자 활용

조회수 1215회

라이브러리를 공부하다가

    while i != 0:
        result.append(i & 0xFF)
        i >>= 8

라는 부분을 발견했습니다.

파이썬에서 >>는 비트연산자로서 오른쪽으로 시프트를 하는 연산자라는 것을 확인했습니다.

하지만 제가 알고 있는 비트연산자는

100 >> 2 = 오른쪽으로 2칸만큼 시프트

100 << 4 = 왼쪽으로 4칸만큼 시프트

로 사용하는 것으로 알고 있습니다만 해당 코드는 뭘 위해서 쓴건지 잘 모르겠습니다.

그냥 명령어로 입력할 경우 Syntax Error가 발생됩니다.

3234234 >>=8
>>> SyntaxError: can't assign to literal

해당 라이브러리를 똑같이 복사하여 print를 찍어보았습니다.

i = 1241535

while i!=0:
     result.append(i&0xFF)
     print(i)
     i>>=8
     print(i)
     print('-------------')
1241535
4849
-----------
4849
18
----------
18
0
---------

숫자가 줄어드는 것으로 보면 시프트를 일으키는거 같은데

>>=가 정확히 뭘 하는 건지 궁금합니다..

혹시 설명이나 관련 자료같은게 있으시다면 조언부탁드립니다.

감사합니다.

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    i >>= 8 은 i 값을 8비트만큼 시프트하고 그 값을 i에 넣으라는 뜻입니다.

    i += 1 처럼 사용한 것입니다.

    3234234 >>=8 이 syntax error를 일으킨 이유는 상수에는 값을 대입할 수 없기 때문입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 답변 감사드립니다. 한민수 2018.1.29 12:47

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)