IINM는 >>>
는 가장 왼쪽의 비트 값을 유지 우측 시프트한다. 이것은 숫자의 부호를 그대로 유지하는 효과가 있습니다 (즉, 음수는 0 대신에 MSB로 삽입됩니다).
파이썬에서 정수는 임의로 커질 수 있습니다. 비트 수가 제한되지 않으므로 최상위 비트의 의미있는 개념이 없습니다. 따라서 오른쪽 쉬프트는 모든 비트를 오른쪽으로 이동시키고 부호를 보존합니다. 따라서 파이썬에서는 >>
을 사용할 수 있습니다.
편집 : @Sven Marnach으로
가 >>>
작업은 내가 자바 스크립트에서했던 생각했던의 정확한 반대하지 지적했다. 따라서 >>>
은 부호를 유지하지 않지만 >>
은 부호를 유지합니다. 또 다른 흥미로운 사실은 -1>>1
이 -1
이고 Javascript가 0
이 아닌 것 같습니다. 말할 필요도없이 Javascript에 대한 지식이 실제로 제한되어 있으므로 Python에서 이러한 연산자와 정확히 동일한 것이 무엇인지 확신 할 수 없습니다.
아마도 하나의 옵션은 (아마도 ctypes.c_int
을 사용하여) 사용되는 비트 수를 명시 적으로 제한 한 다음 사용자 정의 오른쪽 시프트 기능에서 원하는대로 왼쪽 비트를 수동으로 설정할 수 있습니다.
출처
2011-04-18 12:15:40
MAK
연산자 *는 무엇을합니까? 산술 오른쪽 시프트? (''>''같은 것들은 Google에게는 어렵 기 때문에 * 이름을 붙이십시오.) –
btw. Python에서 AES가 필요한 경우 PyCrypto 패키지 만 사용하십시오. http://pycrypto.org/ – vartec
논리적 인 시프트 권한 (LSR)과 반대되는 산술 시프트 권리 (ASR)입니다. 나는 여전히 이들 언어 중 하나가 회전 명령 (ROL과 ROR)을 구현하기를 원하지만 정확한 비트 수에 따라 달라지며 일부 프로세서는 캐리 비트를 통해 회전 시키므로 지저분해진다. 오, BTW,'bits >>> 16 & 0xff'와'bits >> 16 & 0xff'는'&'연산자로 수행 된 마스킹 때문에'bits '가 최소한 24 비트 길이이면 똑같습니다. . 다른 방정식과 동일합니다. 영어로이 방정식은 더 큰 정수 필드에서 단일 바이트를 추출합니다. –