2017-10-17 16 views

答えて

14

&は、ビット単位のAND演算子です。 documentationで述べたように、ビット演算子は論理演算子よりも高い優先順位を持っているので、

0 == 0 & 1 == 1 

0 == (0 & 1) == 1 

になり、あなたはそれがそこから下り坂行く想像することができます:

0 == (0 & 1) == 1 
=> 0 == 0 == 1 
=> 0 == 0 and 0 == 1 
=> True and False 
=> False 

何を想定すると、あなたは欲しかった論理AND、それを行うためのpythonの方法はandを使用していた:

0 == 0 and 1 == 1 

これはあなたの期待通りにTrueを与えます。

+0

ありがとう!これは私が探していた説明です。 – PollPenn

+0

@PollPennよろしくお願いします! –

5

これを分割してください。

ここで最も重要な記号は角かっこです。式全体をラッピングすることを除いて、何もしません。

次にビット単位の演算子&があります。

0 & 1は、0に等しい。

これは01に等しくないとして、我々はFalseを得る0 == 0 == 1

で私たちを残します。

参考までに、operator precedenceに関するpythonのドキュメントを参照してください。

+1

'0&1'は' 0'を生成し、 '1'は生成しません。' 0&ANYINTEGER'は '0'を生成します。最終結果も同様ですが、中間ステップは間違っています。 – ShadowRanger

+0

おっと、 '|'を考えていたに違いない。ありがとう:P – Shadow

関連する問題