2012-07-12 3 views
-1

가능한 중복은 :
Python - '>>' operator파이썬에서 이중 불평등 (>>) 기호는 무엇입니까?

이 수행하는 코드가있다 :

x = n - 1 >> 1 

좀 더 구문을 제공해야하는 경우 나도 몰라,하지만은 않습니다 >> 의미? 나는 모든 것을 조사해 왔지만 어떤 설명도 찾을 수 없다.

+2

대부분의 다른 언어와 마찬가지로 비트 쉬프트라고 생각합니다. – Wug

+1

파이썬 비트 연산자에 대한 [this brief explantion] (http://wiki.python.org/moin/BitwiseOperators)를 참조하십시오. 그러면 인터넷 검색을 시작할 수 있습니다. –

답변

6

오른쪽으로 시프트하는 것은 비트 단위로 비트 단위로 이동하도록 지시하는 비트 단위 연산입니다. 이 경우 2로 나누는 것과 같은 1 씩 이동합니다.

비트 연산을 이해하지 못하면 기억할 간단한 변환이됩니다.

X >> N

그것이 bitwise shift-to-right operator이다

X // (2 ** N)

+0

확실하게'x // (2 ** n)'을 의미합니까? –

+0

@Daniel Pryden 오, 나는 바보예요. 고맙습니다. –

3

동일하다.

그것은 식의 오른쪽에 번호가 오른쪽으로 정수 인수의 비트 시프트

: 바이너리

>>> 8 >> 2 
2 

또는 예시 :

>>> bin(0b1000 >> 2) 
'0b10' 

코드 스 예 그것은 산술 연산과 비트 연산을 혼합하기 때문에 사실 두 배로 혼란 스럽습니다. 그것은 대신 '//' integer division operation 사용해야합니다

x = (n - 1) // 2 
+0

정수를 바이너리 형식으로 변환하는 작업이 필요하다고 생각합니다. 이중 // 연산이란 무엇입니까? – yeenow123

+0

@ yeenow123 : 설명서 (현재 내 대답에 링크되어 있음)는 "(바닥에) x와 y의 지수"라고 말합니다. 바닥 (x/y)으로 번역 할 수 있습니다. 따라서'8 // 2'는 4이지만'9 // 2'도 마찬가지입니다. –

1
x >> y 

은 동일합니다

x.__rshift__(y) 

다른 사람이 말했다 같은 bitshift 될 운명이된다.

1

>>는 비트 오른쪽 시프트 연산자입니다. 이 연산자는 첫 번째 피연산자의 모든 비트를 두 번째 피연산자만큼 오른쪽으로 이동합니다.

그래서하십시오 >> B = A // 2 ** B

예 : 이진

  • 36 0b100100
  • 36 >> 1 0b10010이다 (마지막 이진수 또는 " (2 비트가 제거됨) 오퍼레이터 첨가 한 후 진행하는 것이
  • 9

참고 인 18

  • 36 >> 2 0b1001이다 비트 "제거된다). 따라서 코드는 먼저 n-1을 수행 한 다음 1 비트 씩 오른쪽으로 이동합니다 (즉 2로 나눕니다).

  • 관련 문제