[python] 파이썬에서 >>와 <<는 무엇을 의미합니까?

나는 2 << 564 1000 >> 2를 얻고 250을 얻는 것과 같은 일을 할 수 있음을 알았습니다 .

또한 다음 >>에서 사용할 수 있습니다 print.

print >>obj, "Hello world"

여기서 무슨 일이 일어나고 있습니까?



답변

나는 그것이 중요한 질문이라고 생각하고 아직 답변되지 않았습니다 (OP는 이미 시프트 연산자에 대해 알고있는 것 같습니다). 대답 해 보겠습니다. >> 연산자는 두 가지 다른 목적으로 사용됩니다. C ++ 용어에서이 연산자는 오버로드됩니다. 첫 번째 예에서는 비트 연산자 (왼쪽 시프트)로 사용되는 반면 두 번째 시나리오에서는 출력 리디렉션으로 만 사용됩니다. 즉

2 << 5 # shift to left by 5 bits
2 >> 5 # shift to right by 5 bits
print >> obj, "Hello world" # redirect the output to obj, 

with open('foo.txt', 'w') as obj:
    print >> obj, "Hello world" # hello world now saved in foo.txt

최신 정보:

파이썬 3에서는 다음과 같이 파일 인수를 직접 지정할 수 있습니다.

print("Hello world", file=open("foo.txt", "a")) # hello world now saved in foo.txt


답변

이들은 비트 시프트 연산자입니다.

문서 에서 인용 :

x << y

xy 자리만큼 왼쪽으로 이동 한 비트를 반환 합니다 (오른쪽의 새 비트는 0 임). 이 승산과 동일 x하여 2**y.

x >> y

xy 자리만큼 오른쪽으로 이동 한 비트를 반환 합니다. 이것은 분할과 동일 x하여 2**y.


답변

12 << 2

48

위의 명령문을 실행할 때 실제 이진 값 12는 “00 1100″입니다. Left shift (왼쪽으로 2 자리 이동)는 값 48을 반환합니다. 이진수 값은 “11 0000″입니다.

48 >> 2

12

이진 값 48은 “11 0000″이며 위의 명령문을 실행 한 후 Right shift (오른쪽으로 2 자리 이동)는 값 12를 반환합니다. 이진 값은 “00 1100″입니다.


답변

관련된 다른 경우 print >>obj, "Hello World"는 Python 2 의 print 명령문 에 대한 “print chevron”구문입니다 (Python 3에서 제거되고 함수file인수 로 대체 됨 ). 표준 출력에 쓰는 대신 출력이 메서드에 전달됩니다 . 일반적인 예는 메서드 가있는 파일 개체 입니다. 최근 질문에 대한 답변을 참조하십시오. Double greater-than sign in Python .print() obj.write()write()


답변

그들은 많은 주류 프로그래밍 언어에 존재하는 비트 시프트 연산자이며 <<왼쪽 시프트이고 >>오른쪽 시프트입니다. 다음 표와 같이 설명 할 수 있습니다. 정수는 메모리에서 1 바이트 만 사용한다고 가정합니다.

| operate | bit value | octal value |                       description                        |
| ------- | --------- | ----------- | -------------------------------------------------------- |
|         | 00000100  |           4 |                                                          |
| 4 << 2  | 00010000  |          16 | move all bits to left 2 bits, filled with 0 at the right |
| 16 >> 2 | 00000100  |           4 | move all bits to right 2 bits, filled with 0 at the left |


답변

이들은 시프트 연산자입니다

x << y 비트가 y 자리만큼 왼쪽으로 이동 한 x를 반환합니다 (오른쪽의 새 비트는 0 임). 이것은 x에 2 ** y를 곱하는 것과 같습니다.

x >> y y 자리만큼 오른쪽으로 비트를 이동 한 x를 반환합니다. 이것은 // ‘x를 2 ** y로하는 것과 같습니다.


답변

<< Mean any given number will be multiply by 2the power
for exp:- 2<<2=2*2'1=4
          6<<2'4=6*2*2*2*2*2=64