現在、私は秋の基本情報技術者試験に向けて勉強中です。
その中で、私が得た知識をまとめて記事にしています。
コードが知りたい方は目次のソースコードへ飛んでください!
本記事のテーマ
否定論理積回路(NAND回路)
NAND回路はAND回路とNOT回路を組み合わせた回路です。
AND回路を反転したものであるため、
入力が両方とも'1'だった時に、'0'を出力し、それ以外は'1'を出力します。
論理式:
真理値表:
否定論理和回路(NOR回路)
NOR回路はOR回路とNOT回路を組み合わせた回路です。
OR回路を反転させるので、入力のどちらか一つでも'1'だった時に'0'を出力します。
論理式:
真理値表:
排他的論理和回路(XOR回路)
簡単にいうと、「他人と同じはいや!」回路です。
どういうことかというと、二つの入力に対して、同じ入力の時は'0'、異なる入力の時は'1'を出力する回路です。
論理式:
真理値表:
基本回路の組み合わせが少し複雑なので、もう少し細かく説明します。
以上で論理回路の説明は終了です!
今回は基本回路を組み合わせた少し複雑な回路の説明を行いました。複雑だからこそ、問題としてよく出そうなので頑張って覚えましょう!
次は、この論理回路をプログラミングで用いる時の手法「論理演算」をPythonで実装して実験してみたいと思います!
Pythonで論理演算
はじめに、
Pythonは浮動小数点を扱っているので、'0'の反転は'-1'、'1'の反転は'-2'になります。
理由:
例2ビット(浮動小数点)
2進数 10進数
00 0
01 1
10 −1
11 −2
NAND演算
NAND演算は「~(A&B)」です。
code
print("NAND演算")
print("~(0 & 0) =", ~(0 & 0))
print("(~0 & 1) =", ~(0 & 1))
print("~(1 & 0) =", ~(1 & 0))
print("~(1 & 1) =", ~(1 & 1))
出力
NAND演算
~(0 & 0) = -1
(~0 & 1) = -1
~(1 & 0) = -1
~(1 & 1) = -2
真理値表と同じになってます。
NOR演算
NOR演算子は「~(A|B)」です。
code
print("NOR演算")
print("~(0 | 0) =", ~(0 | 0))
print("~(0 | 1) =", ~(0 | 1))
print("~(1 | 0) =", ~(1 | 0))
print("~(1 | 1) =", ~(1 | 1))
出力
NOR演算
~(0 | 0) = -1
~(0 | 1) = -2
~(1 | 0) = -2
~(1 | 1) = -2
真理値表と同じになってます。
排他的論理和演算
code
print("XOR演算")
print("0 ^ 0 =", 0 ^ 0)
print("0 ^ 1 =", 0 ^ 1)
print("1 ^ 0 =", 1 ^ 0)
print("1 ^ 1 =", 1 ^ 1)
出力
XOR演算
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
真理値表と同じになってます。
参考資料
・キタミ式イラストIT塾 基本情報技術者 平成31/01年