ビット演算は便利だから使えるようになろう!

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)

関連記事

  1. 再帰関数を使って末端ジョイントを取得しよう!

    2021-01-08

  2. マウスから手を離さないで!ポップアップメニューを改造で高速化!

    2021-05-25

  3. Maya C++ 入門② | 単純なコマンドプラグインを作成しよう!

    2022-06-17

  4. Maya C++ 入門 | 単純なプラグインを作成してみよう!

    2022-06-14

コメントをお待ちしています。

コメント

ABOUT

テクニカルアーティストの為のまとめサイトです。

本サイトでは、『YouTube ✕ Blog』を中心に
情報発信をしていきます。

また、テクニカルアーティストとしての様々な
ライフハック記事も投稿予定です。

限定情報会員

PATREONでは、限定情報やサンプルファイルの配布も行っています。登録頂けると更新頑張れます。支援の方よろしくお願いします。


免責事項

本ウェブサイト内で公開している全ての情報の有用性や安全性については当方は一切の保証を与えるものではありません。
利用したことによって引き起こる直接および間接的な損害に対して当方は一切責任を負うものではありません。
全て自己責任でご使用ください。

3DCGBOOK出版

BOOTHで技術書を販売利しております。







スポンサー

ページ上部へ戻る