人工知性を作りたい

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

論理回路と論理演算(AND・OR・NOT)【Pythonで基本情報技術者になろう!】

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



 

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

 

 

 

  

 

 

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

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

 

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

本記事のテーマ

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

論理回路と論理演算

AND・OR・NOT回路の説明を行います。

 

論理積回路(AND回路)

入力が両方とも'1'だった時に、'1'を出力するのが論理積回路(AND回路)です。

ちなみに、論理演算は論理式という式で表すことができます。

論理式: A ・ B = Y

A: 入力

B: 入力

Y: 出力

 

この時、入力としてA、Bが取りうる値の組合せは全部で4パターン。これに、対応する出力Yをくっつけて表としてまとめたのが真理値表です。

真理値表: 

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

 

論理和回路(OR回路)

入力のどちらか一つでも'1'だった時に'1'を出力するのが論理和回路(OR回路)です。

論理和を表す演算記号は「+」です。

論理式: A + B = Y

A: 入力

B: 入力

Y: 出力

真理値表:

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

 

否定回路(NOT回路)

入力した値を反転する回路を否定回路(NOT回路)という。

否定の演算記号は値の上に'ー'を付け加えます。

真理値表:

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

 

 

 

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

論理回路は、中学?高校?で習った集合のベン図と同じなので、復習しましょう!

 

次は、この論理回路をプログラミングで用いる時の手法「論理演算」をPythonで実装して実験してみたいと思います! 

Pythonで論理演算

AND演算

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年