🦔
論理演算を用いた奇数と偶数の判定(Python)
実装
def is_even_or_odd(num):
return "Even" if num & 1 == 0 else "Odd"
number = 5
result = is_even_or_odd(number)
print(f"{number} is {result}")
説明:
-
任意の整数を
n
とする。このn
を二進数に変換し、1を二進数に変換する。- 1は二進数で表すと
0b00..1
。最下位ビットが1であり、それ以外のビットはすべて0である。 - 任意の奇数
n
を二進数で表すと、最下位ビットが1であり、それ以外のビットは数値によって変わる。
- 1は二進数で表すと
-
次に、これらの二進数の論理積(AND演算)を求める。
- 奇数の場合、最下位ビットが1であるため、
n & 1
の結果は1になる。一方、偶数の場合は0になる。 - 最下位ビット以外のビットについては、1の最下位ビット以外がすべて0であるため、論理積の結果は0になる。
- 奇数の場合、最下位ビットが1であるため、
これにより、1とnの論理積の結果が、n
が奇数か偶数かを判定できる。
Discussion