1

numpy 비트 연산자의 우선 순위는 무엇입니까 & 및 | ?Numpy bitwise operator priority?

내가 할 경우

a & b | c 

그것은 어떤 표현을 평가합니까? a & (b | c)? (a & b) | c?

나는 또한 NOT 가정

a | b & c 

에 대해 (~) 가장 높은 우선 순위를 가지고 있습니까?

답변

8

인터넷 연결이 끊어졌을 때 사용할 수있는 기술입니다. 많은 질문에 적용 할 수 있습니다. 기술에 대한 구어체 설명은 "빨아서 보아라".

>>> from itertools import product 
>>> list(product(range(2), repeat=3)) 
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)] 
>>> all((a & b | c) == ((a & b) | c) for a, b, c in product(range(2), repeat=3)) 
True 
>>> all((a & b | c) == (a & (b | c)) for a, b, c in product(range(2), repeat=3)) 
False 
+1

+1 사람들이 종종 간과하는 접근 방식을 제시합니다. – prelic

+1

나는 확실히 시도하고 접근을 좋아한다. 첫 번째 진술이 사실이라면 두 연산자가 여전히 같은 우선 순위를 가질 수 있기 때문에 '(a | b & c) == ((a | b)')와 반대 연산자를 확인하는 것이 좋습니다. c)'. false이기 때문에'&'는'|'보다 더 높은 우선 순위를가집니다. 그러나'+'와'-' 같은 연산자는 같은 우선 순위를가집니다. –

7

this section of the documentationthis page (thanks @ F.J.)을 참조하십시오.

우선 순위는 :

  1. 하지 (~)
  2. 및 (&)
  3. XOR (^)
  4. 또는 (|)

이 의미 :

a & b | c == (a & b) | c 
a | b & c == a | (b & c) 
+1

[this] (http://docs.python.org/reference/expressions.html#summary)에 따르면'^'는'|'보다 우선 순위가 높습니다. 증명하기 쉽다.'1 | 2^3! = (1 | 2)^3'. –

+0

잘 잡습니다. 나는 편집을했다. – Benjamin