1

numpyビット演算子の優先順位は何ですか?&と| ?ナンシービット演算子の優先度?

私は

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

私はtry and seeアプローチを間違いなく好きです。最初の文が真であれば、2つの演算子が同じ優先順位を持つことができるので、 '(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