Pythonのプログラムを作成するために「Google Colab」を利用します。次のリンクを開いて、新しいノートブック「ip02-03」を作成しましょう。
Pythonを使って、ビット単位の論理演算を行ってみましょう。
学習の目的
・Pythonで論理演算を行う
Pythonを使って、ビット単位の論理演算を行ってみましょう。
Pythonのプログラムを作成するために「Google Colab」を利用します。次のリンクを開いて、新しいノートブック「ip02-03」を作成しましょう。
次のプログラムを貼り付けて実行しましょう。
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キーを押しながら「¥」のキーで出すことができます。
表示結果が、思ってたのと違うよ。
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進数の表記になったね!!
これならわかりやすいよ。
それでは問題です!!
変数aの上の2ビットを抜き出す(下6ビットを0にする)プログラムの空欄に何が入りますか?
a = 0b10110101
b = 【 ① 】
print("AND :", bin(a 【 ② 】 b))
実行結果
0b10000000
ちゃんと実行結果と同じになるか、確認してから答えましょう。
①
②
変数aの下4ビットを1にするプログラムの空欄に何が入りますか?
a = 0b10110101
b = 【 ③ 】
print("OR :", bin(a 【 ④ 】 b))
実行結果
0b10111111
③
④
変数aの中4ビット(上から3ビット目〜6ビット目)の0と1を反転するプログラムの空欄に何が入りますか?
a = 0b10110101
b = 【 ⑤ 】
print("XOR :", bin(a 【 ⑥ 】 b))
実行結果
0b10001001
⑤
⑥
※この再現版では提出は行いません(送信先は未接続です)