"if 1 & 5" がなぜTrueなのか？


Pythonで`if 1 & 5`とするとTrueが返ってくるのに、`if 2 &
5`とするとTrueが返ってこないのは何故なんですか？考えても答えが見つからなかったので教えて欲しいです。  
よろしくお願いします。




Pythonで & はビット演算のANDですから、1,2,5を２進数にして考えましょう。  
1 = 0001  
2 = 0010  
5 = 0101

ビット演算のANDなので、両方の数のビットが立っている(1である）桁の結果は１、それ以外は0になります。

1 & 5だと

>
[code]

>     0001
>  
[/code]

>
> & 0101
>
> * * *
[code]

>     0001
>  
[/code]

>
> となります。

また、2 & 5だと

>
[code]

>     0010
>  
[/code]

>
> & 0101
>
> * * *
[code]

>     0000
>  
[/code]

>
> となります。

そして、0がFalseに、0以外がTrueですから、1&5がTrue、2&5がFalseになります。




Pythonで & はビット演算のANDですから、1,2,5を２進数にして考えましょう。  
1 = 0001  
2 = 0010  
5 = 0101

ビット演算のANDなので、両方の数のビットが立っている(1である）桁の結果は１、それ以外は0になります。

1 & 5だと

>
[code]

>     0001
>  
[/code]

>
> & 0101
>
> * * *
[code]

>     0001
>  
[/code]

>
> となります。

また、2 & 5だと

>
[code]

>     0010
>  
[/code]

>
> & 0101
>
> * * *
[code]

>     0000
>  
[/code]

>
> となります。

そして、0がFalseに、0以外がTrueですから、1&5がTrue、2&5がFalseになります。

