나는 2 << 5
64 1000 >> 2
를 얻고 250을 얻는 것과 같은 일을 할 수 있음을 알았습니다 .
또한 다음 >>
에서 사용할 수 있습니다 print
.
print >>obj, "Hello world"
여기서 무슨 일이 일어나고 있습니까?
나는 2 << 5
64 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
__rshift__
및 __lshift__
메서드 를 통해 이러한 연산자를 재정의 할 수 있습니다 .
이들은 비트 시프트 연산자입니다.
문서 에서 인용 :
x << y
x
y 자리만큼 왼쪽으로 이동 한 비트를 반환 합니다 (오른쪽의 새 비트는 0 임). 이 승산과 동일 x
하여 2**y
.
x >> y
x
y 자리만큼 오른쪽으로 이동 한 비트를 반환 합니다. 이것은 분할과 동일 x
하여 2**y
.
print bin(1)
, print bin(1 << 1)
, print bin(17)
, print bin(17 >> 1)
등. 설명없이 어떻게 작동하는지 볼 수 있습니다.
print >>obj, "Hello world"
2 << 5
되고 1000 >> 2
¯_ (ツ) _ / ¯
관련된 다른 경우 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
<<
,>>
,&
,|
,~
, 및^
합니까?