Python에서 >>와 <<>는 무엇을 의미합니까?
나는 내가 할 수 있는 것을 알아차렸다.2 << 5
64점을 받고1000 >> 2
250을 얻습니다.
또한 사용할 수 있습니다.>>
에print
:
print >>obj, "Hello world"
여기서 무슨 일이 일어나고 있는 거야?
그>>
이 예에서는 연산자가 두 가지 용도로 사용됩니다.C++ 용어로 이 연산자는 오버로드됩니다.첫 번째 예에서는 비트 연산자(오른쪽 시프트)로 사용됩니다.
2 << 5 # shift left by 5 bits
# 0b10 -> 0b1000000
1000 >> 2 # shift right by 5 bits
# 0b1111101000 -> 0b11111010
두 번째 시나리오에서는 출력 리다이렉션에 사용되는 동안 다음과 같이 파일 개체와 함께 사용합니다.
with open('foo.txt', 'w') as f:
print >>f, 'Hello world' # "Hello world" now saved in foo.txt
의 두 번째 사용>>
Python 2에서만 작동했습니다.Python 3 에서는, 다음의 출력을 리다이렉트 할 수 있습니다.print()
사용방법file=
인수:
with open('foo.txt', 'w') as f:
print('Hello world', file=f) # "Hello world" now saved in foo.txt
이들은 비트 단위 이동 연산자입니다.
문서로부터의 인용:
x << y
돌아온다x
(오른쪽의 새 비트는 0)으로 이동합니다.이것은 곱셈과 같다.x
타고2**y
.
x >> y
돌아온다x
비트가 오른쪽으로 y개씩 이동한다.이것은 나누는 것과 같다.x
타고2**y
.
12 < < 2
48
위의 문장을 실행할 때 실제 이진수 값 12는 "00 1100"입니다. 왼쪽 이동(왼쪽 2자리 이동)은 값 48을 반환합니다. 이진수 값은 "11 0000"입니다.
48 >> 2
12
이진수 값 48은 "11 0000"이며, 위의 문을 실행한 후 오른쪽 이동(2자리 이동)은 값 12를 반환합니다. 이 값은 "00 1100"입니다.
이들은 많은 주류 프로그래밍 언어에 존재하는 비트 시프트 연산자입니다.<<
왼쪽 시프트와>>
는 올바른 시프트입니다.다음 표와 같이 설명할 수 있습니다.정수가 메모리에서 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 |
또 다른 케이스는print >>obj, "Hello World"
의 "프린트 쉐브론" 구문입니다.print
Python 2의 스테이트먼트(Python 3에서 삭제, Python 3으로 대체)file
의 논거print()
기능).출력은 표준 출력에 쓰는 대신obj.write()
방법.일반적인 예로는 다음과 같은 파일 객체가 있습니다.write()
방법.다음 질문에 대한 답변을 참조하십시오.Python에서는 두 배 이상의 기호가 있습니다.
이들은 교대 연산자들입니다.
x << y 비트가 y 자리수만큼 왼쪽으로 이동된 x를 반환합니다(오른쪽의 새 비트는 0).이것은 x에 2**y를 곱하는 것과 같습니다.
x >> y는 x를 반환하고 비트는 y자리만큼 오른쪽으로 이동합니다.이것은 //'xx2**y'와 같습니다.
"비트 단위" 연산자입니다.https://wiki.python.org/moin/BitwiseOperators
>>> help("symbols")
+-------------------------------------------------+---------------------------------------+
| Operator | Description |
|=================================================|=======================================|
| "<<", ">>" | Shifts |
+-------------------------------------------------+---------------------------------------+
| "&" | Bitwise AND |
+-------------------------------------------------+---------------------------------------+
| "|" | Bitwise OR |
+-------------------------------------------------+---------------------------------------+
| "~x" | bitwise NOT |
+-----------------------------------------------------------------------------------------+
| "^" | Bitwise XOR |
+-------------------------------------------------+---------------------------------------+
x << y
십중팔구 비트는 y자리만큼 왼쪽으로 이동하며 오른쪽에 있는 새 비트는 0입니다.2**y라고 합니다.
x >> y
오른쪽으로 y자리만큼 이동된 비트와 함께 x를 반환합니다.//'xx2**y'입니다.
python 3.9에서는 연산자 " | "가 사전을 병합합니다.
https://docs.python.org/3.9/whatsnew/3.9.html
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
2 < 5 (왼쪽 시프트)
2비트(2진수)를 왼쪽으로 5비트 이동.(오른쪽 0으로 표시)
bin(16) # '0b10'
shifted = bin(2) + '0' * 5 # '0b1000000'
int(shifted, 2) # 64
2 << 5 # 64
1000 >> 2 (오른쪽으로 이동)
1000(2진수)을 오른쪽으로 2비트 이동.(왼쪽은 0입니다.)
bin(1000) # '0b1111101000'
# add 00 to the left and remove last digit from the right
# '0b 00(add these bits) 11111010 00(remove these bits)'
shifted = '0b0011111010'
int(shifted, 2) # 250
1000 >> 2 # 250
Python 2.7과 Python 3.8에서 아래 사항을 확인하였습니다.
인쇄했습니다(100<3) 100을 2진수로 변환하면 1100100이 됩니다.처음 3비트를 드롭하고 마지막에 값이 '0'인 3비트를 더했습니다.따라서 0100000이 됩니다.이 값을 Decimal로 변환하면 답은 32입니다.
인쇄(100<3)를 실행했을 때의 대답은 800이었습니다.나는 당황했다.무슨 일이 일어나고 있는지 확인하기 위해 800을 바이너리로 변환했습니다.이게 1100100000입니다
800이 Python의 답변인 것을 알 수 있다면, 그들은 처음 3비트를 옮기거나 떨어뜨리지 않고 마지막 3비트에 '0' 값을 더했습니다.
print(100>>3)에서는, 완전하게 동작.수동 계산을 하고 python에서 프린트 결과를 확인했습니다.제대로 작동했어요.마지막 3비트를 드롭하고 처음 3비트에 값 '0'을 추가합니다.
(100<3)처럼 보입니다.왼쪽 시프트 연산자는 Python에 버그가 있습니다.
<< 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
언급URL : https://stackoverflow.com/questions/22832615/what-do-and-mean-in-python
'programing' 카테고리의 다른 글
교대 열 값별로 그룹화된 행 가져오기 (0) | 2022.09.13 |
---|---|
다른 어레이에 포함된 모든 요소 제거 (0) | 2022.09.13 |
MySQL에서 누적 합계 열 생성 (0) | 2022.09.13 |
matplotlib의 날짜 눈금 및 회전 (0) | 2022.09.13 |
단일 페이지 애플리케이션을 구축하지 않을 때 Vue.js의 단일 파일 구성 요소를 구축하고 Import하려면 어떻게 해야 합니까? (0) | 2022.08.30 |