Pythonで学ぶ論理ゲートの実装方法|AND・OR・NOT・NAND・NORを徹底解説
本記事では、Pythonにおける論理ゲート(Logic Gates)の実装方法について詳しく解説します。電気信号の処理でおなじみの論理ゲートは、ダイオードやトランジスタを組み合わせて構成され、電気・電子産業の分野で広く活用されています。ここでは、Python 3.xを使って「AND」「OR」「NOT」「NAND」「NOR」といった基本ゲートを、それぞれ真理値表に基づいたユーザー定義関数として実装していきます。
論理ゲートとは
論理ゲートとは、入力された信号の組み合わせに応じて特定の出力を返す、デジタル回路の基本要素です。ソフトウェアの世界でも、同じ動作を関数として模倣できます。各ゲートには対応する真理値表があり、その表どおりの結果を返すように条件分岐を設計するのがポイントです。
PythonでのANDゲートの実装
ANDゲートは、両方の入力が1のときだけTrue(1)を返すゲートです。
サンプルコード
def AND(a, b):
if a == 1 and b == 1:
return True
else:
return False
# メイン処理
if __name__ == '__main__':
print(AND(0, 0))
print(AND(1, 0))
print(AND(0, 1))
print(AND(1, 1))
実行結果
False False False True
入力が (1, 1) の場合のみTrueが返され、それ以外はすべてFalseになっていることが確認できます。
PythonでのORゲートの実装
ORゲートは、どちらか一方でも入力が1であればTrueを返すゲートです。
サンプルコード
def OR(a, b):
if a == 1:
return True
elif b == 1:
return True
else:
return False
# メイン処理
if __name__ == '__main__':
print(OR(0, 0))
print(OR(1, 0))
print(OR(0, 1))
print(OR(1, 1))
実行結果
False True True True
(0, 0) のときだけFalseとなり、それ以外のすべての組み合わせでTrueが返されます。
PythonでのNOTゲートの実装
NOTゲート(インバータ)は、入力を反転させて出力する単一入力のゲートです。入力が0なら1を、1なら0を返します。
サンプルコード
def NOT(a):
if a == 0:
return 1
elif a == 1:
return 0
# メイン処理
if __name__ == '__main__':
print(NOT(0))
print(NOT(1))
実行結果
1 0
入力値がそのまま反転して出力される、シンプルな構造です。
PythonでのNANDゲートの実装
NANDゲートは、ANDゲートの出力を反転させたもので、ユニバーサルゲート(万能ゲート)と呼ばれる重要なゲートの一つです。両方の入力が1のときだけFalseを返します。
サンプルコード
def NAND(a, b):
if a == 1 and b == 1:
return False
else:
return True
# メイン処理
if __name__ == '__main__':
print(NAND(0, 0))
print(NAND(1, 0))
print(NAND(0, 1))
print(NAND(1, 1))
実行結果
True True True False
PythonでのNORゲートの実装
NORゲートは、ORゲートの出力を反転させたもので、こちらもNANDと同様にユニバーサルゲートです。両方の入力が0のときだけTrueを返します。
サンプルコード
def NOR(a, b):
if a == 0 and b == 0:
return True
elif a == 0 and b == 1:
return False
elif a == 1 and b == 0:
return False
elif a == 1 and b == 1:
return False
# メイン処理
if __name__ == '__main__':
print(NOR(0, 0))
print(NOR(1, 0))
print(NOR(0, 1))
print(NOR(1, 1))
実行結果
True False False False
まとめ
本記事では、Python 3.xを用いてAND、OR、NOT、そしてユニバーサルゲートであるNAND・NORの5種類の論理ゲートを実装しました。いずれも真理値表に沿って条件分岐を記述するだけで簡単に再現できるため、デジタル回路の基礎理解とPythonの関数設計の両方を学べる良い題材です。さらにXORやXNORなどほかのゲートにも挑戦してみると、理解がより深まるでしょう。
-
【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説
はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが
-
PythonでQuine(クワイン)プログラムを書いてみよう
「Quine(クワイン)」とは、入力を一切受け取らずに、自分自身のソースコードを出力する特殊なプログラムのことです。一見すると不思議な自己言及的な仕組みですが、実装にはいくつかの厳格なルールがあります。最も重要な条件は、プログラム内部からソースコードファイルを読み込んではいけないという点です。つまり、純粋にコード自身の論理だけで自分の内容を再現しなければなりません。 サンプルコード Pythonでは、わずか1行でQuineを実現できます。 a=a=%r;print (a%%a);print (a%a) 実行結果 a=a=%r;print (a%%a);print (a%a) ご覧のとお