現在、私は秋の基本情報技術者試験に向けて勉強中です。
その中で、私が得た知識をまとめて記事にしています。
コードが知りたい方は目次のソースコードへ飛んでください!
本記事のテーマ
AND・OR・NOT回路の説明を行います。
論理積回路(AND回路)
入力が両方とも'1'だった時に、'1'を出力するのが論理積回路(AND回路)です。
ちなみに、論理演算は論理式という式で表すことができます。
論理式: A ・ B = Y
A: 入力
B: 入力
Y: 出力
この時、入力としてA、Bが取りうる値の組合せは全部で4パターン。これに、対応する出力Yをくっつけて表としてまとめたのが真理値表です。
真理値表:
論理和回路(OR回路)
入力のどちらか一つでも'1'だった時に'1'を出力するのが論理和回路(OR回路)です。
論理和を表す演算記号は「+」です。
論理式: A + B = Y
A: 入力
B: 入力
Y: 出力
真理値表:
否定回路(NOT回路)
入力した値を反転する回路を否定回路(NOT回路)という。
否定の演算記号は値の上に'ー'を付け加えます。
真理値表:
以上で論理回路の説明は終了です!
論理回路は、中学?高校?で習った集合のベン図と同じなので、復習しましょう!
次は、この論理回路をプログラミングで用いる時の手法「論理演算」をPythonで実装して実験してみたいと思います!
Pythonで論理演算
AND演算
code
print("AND演算")
print("0 & 0 =", 0 & 0)
print("0 & 1 =", 0 & 1)
print("1 & 0 =", 1 & 0)
print("1 & 1 =", 1 & 1)
出力
AND演算
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
真理値表と同じになってます。
OR演算
OR演算子は「|」です。
code
print("OR演算")
print("0 | 0 =", 0 | 0)
print("0 | 1 =", 0 | 1)
print("1 | 0 =", 1 | 0)
print("1 | 1 =", 1 | 1)
出力
OR演算
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
真理値表と同じになってます。
否定演算
否定演算子は「~」です。
code
print("NOT演算")
print("~0 =", ~0)
print("~1 =", ~1)
print("~0x00 =", bin(~(0x00)))
print("~0xff =", bin(~(0xff)))
出力
NOT演算
~0 = -1
~1 = -2
~0x00 = -0b1
~0xff = -0b100000000
Pythonは浮動小数点を扱っているので、'0'の反転は'-1'、'1'の反転は'-2'になります。
理由:
例2ビット(浮動小数点)
2進数 10進数
00 0
01 1
10 −1
11 −2
参考資料
・キタミ式イラストIT塾 基本情報技術者 平成31/01年