Pythonで論理演算をしよう

学習の目的

  • ・Pythonで論理演算を行う

Pythonを使って、ビット単位の論理演算を行ってみましょう。

Pythonプログラムを実行する準備をしよう

Pythonのプログラムを作成するために「Google Colab」を利用します。次のリンクを開いて、新しいノートブック「ip02-03」を作成しましょう。

1 論理積・論理和・否定

次のプログラムを貼り付けて実行しましょう。

a = 0b1100
b = 0b1010

print("AND :", a & b)  # 論理積
print("OR  :", a | b)  # 論理和
print("XOR :", a ^ b)  # 排他的論理和
print("NOT a:", ~a & 0b1111)  # 否定(4ビットに収める)

実行結果

aとbに入れている値ですけど、"0b"(ゼロ ビー)から始まっていますね。

何かの暗号かな?

頭に"0b"とついている数値は、それが2進数であることを表しています。

0と1しか使えないので気をつけてください。

なるほど、プログラムで2進数を使うときは重要だね。覚えておこう。

そして肝心の論理演算を行う記号が、「&」「|」「~」です。

論理演算 使用する記号 使用例
論理積&(アンド)a & b
論理和|(バーティカルバー)a | b
否定~(チルダ)~a

論理和の記号「|」は、バーティカルバーという名前の記号です。

アルファベット小文字の「l(エル)」とよく似ていますが、違うものになるので注意しましょう。

キーボードでは、Shiftキーを押しながら「¥」のキーで出すことができます。

2 2進表記にしよう

表示結果が、思ってたのと違うよ。

10進数で表記されているみたいだね。

そうなんです。結果を2進数で表記したいときは、bin(…)を使います。

次のプログラムを貼り付けて実行しましょう。

a = 0b1100
b = 0b1010

print("AND :", bin(a & b))  # 論理積
print("OR  :", bin(a | b))  # 論理和
print("XOR :", bin(a ^ b))  # 排他的論理和
print("NOT a:", bin(~a & 0b1111))  # 否定(4ビットに収める)

実行結果

あ、2進数の表記になったね!!

これならわかりやすいよ。

それでは問題です!!

問1

変数aの上の2ビットを抜き出す(下6ビットを0にする)プログラムの空欄に何が入りますか?

a = 0b10110101
b = 【 ① 】

print("AND :", bin(a 【 ② 】 b))

実行結果

0b10000000

ちゃんと実行結果と同じになるか、確認してから答えましょう。

①

②

問2

変数aの下4ビットを1にするプログラムの空欄に何が入りますか?

a = 0b10110101
b = 【 ③ 】

print("OR :", bin(a 【 ④ 】 b))

実行結果

0b10111111

③

④

問3

変数aの中4ビット(上から3ビット目〜6ビット目)の0と1を反転するプログラムの空欄に何が入りますか?

a = 0b10110101
b = 【 ⑤ 】

print("XOR :", bin(a 【 ⑥ 】 b))

実行結果

0b10001001

⑤

⑥

※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる