人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

NAND回路・NOR回路・XOR回路(排他的論理和回路)【Pythonで基本情報技術者になろう!】

f:id:hiro-htm877:20190619230445j:plain



 

f:id:hiro-htm877:20190601202549p:plain

 

 

 

  

 

 

現在、私は秋の基本情報技術者試験に向けて勉強中です。

その中で、私が得た知識をまとめて記事にしています。

 

コードが知りたい方は目次のソースコードへ飛んでください!

本記事のテーマ

Python基本情報技術者になろう!】

・NAND回路・NOR回路・XOR回路(排他的論理和回路)

Pythonで実験!

 

否定論理積回路(NAND回路)

NAND回路はAND回路とNOT回路を組み合わせた回路です。

AND回路を反転したものであるため、

入力が両方とも'1'だった時に、'0'を出力し、それ以外は'1'を出力します。

論理式:

真理値表:

f:id:hiro-htm877:20190624211440j:plain

 

否定論理和回路(NOR回路)

NOR回路はOR回路とNOT回路を組み合わせた回路です。

OR回路を反転させるので、入力のどちらか一つでも'1'だった時に'0'を出力します。

論理式:

真理値表:

f:id:hiro-htm877:20190624211618j:plain

排他的論理和回路(XOR回路)

簡単にいうと、「他人と同じはいや!」回路です。

どういうことかというと、二つの入力に対して、同じ入力の時は'0'、異なる入力の時は'1'を出力する回路です。

論理式:

真理値表:

f:id:hiro-htm877:20190624211505j:plain

 

基本回路の組み合わせが少し複雑なので、もう少し細かく説明します。

f:id:hiro-htm877:20190624211725j:plain

 

以上で論理回路の説明は終了です!

今回は基本回路を組み合わせた少し複雑な回路の説明を行いました。複雑だからこそ、問題としてよく出そうなので頑張って覚えましょう!

 

次は、この論理回路をプログラミングで用いる時の手法「論理演算」を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年