Pythonのビット演算の便利な使い方について紹介してみました。
複数の条件があった時に非常に便利です。
ビット演算と聞くと「うっ・・・」ってなるかもしれませんが、
割とシンプルなものです。是非使ってみて下さいね。
管理人がYouTubeで解説!
サンプルコード
# ビットの定義
# 0b0001 :玄関のスイッチ
# 0b0010 :ダイニングのスイッチ
# 0b0100 :リビングのスイッチ
# 0b1000 :トイレのスイッチ
light_status = 0b0110 # ダイニングとリビングのスイッチをつけるという意味になります。
if 0b0001 & light_status:
print("玄関の電気が点いています。")
if 0b0010 & light_status:
print("ダイニングの電気が点いています。")
if 0b0100 & light_status:
print("リビングの電気が点いています。")
if 0b1000 & light_status:
print("トイレの電気が点いています。")
# 逆にする ⇨ 0b0110 -> 0b1001 ということ。
not_light_status = ~0b0110 & 0b1111
print(bin(not_light_status))
# ビット演算の便利な使い方:引数が1つ!但し、わかりにくいかもしれません。
def check_light_status(light_status):
if 0b0001 & light_status:
print("1.玄関の電気が点いています。")
if 0b0010 & light_status:
print("2.ダイニングの電気が点いています。")
if 0b0100 & light_status:
print("3.リビングの電気が点いています。")
if 0b1000 & light_status:
print("4.トイレの電気が点いています。")
return
check_light_status(0b1011)
# ビット演算を使わないパターン:引数がめっちゃ多くなる・・・
def check_light_status(
isEntrance=True,
isDining=True,
isLiving=True,
isToilet=True
):
if isEntrance:
print("1.玄関の電気が点いています。")
if isDining:
print("2.ダイニングの電気が点いています。")
if isLiving:
print("3.リビングの電気が点いています。")
if isToilet:
print("4.トイレの電気が点いています。")
return
check_light_status(isEntrance=False)
コメント