電験三種 学習ノート

理論・電力・機械・法規を、試験科目の範囲の順に記事と練習問題で学ぶ

機械-21 電気機器・パワーエレクトロニクス・応用・制御

論理回路と2進数

  • 2進数
  • 16進数
  • 論理回路
  • AND回路
  • OR回路
  • NOT回路
  • NAND回路
  • 真理値表
  • ブール代数
  • フリップフロップ

はじめに

1 / 6

「コンピュータは 0 と 1 しか扱えないって聞くけど、それでどうして計算や判断ができるんだろう……」

前回の記事では、周波数応答のゲインと位相、ボード線図、ナイキスト線図による安定判別、そして PID 制御を学びました。今の制御装置の多くは、その計算をコンピュータの中で行っています。

例えば、変電所の保護装置は「電流が大きすぎる、かつ一定時間続いた」なら遮断器を開きます。エレベーターは「扉が閉まっている、かつ呼ばれた階がある」なら動き出します。どれも「はい」か「いいえ」を組み合わせた判断です。

実は、どんなに複雑な判断も、「かつ」「または」「でない」という3つの基本の組み合わせで作れます。そして、数も 0 と 1 の並びで表せます。0 と 1 だけで、数も判断も記憶も扱えるのです。

そこで登場するのが、今回の主役 論理回路 です。0 と 1 の信号を入れると、決まった規則で 0 か 1 を出す回路です。

今回の記事では、2進数と16進数、基本の論理回路と真理値表、式を簡単にするブール代数、そして1ビットを記憶するフリップフロップについて解説します。

2進数と16進数:0と1で数を表す

1 / 7

はじめに、2進数と16進数について紹介します。

1. 2進数

ふだん使っている数は、0〜9 の10種類の数字を使い、10 になると1つ上の桁に繰り上がる10進数です。これに対して、0 と 1 の2種類だけを使い、2 になると繰り上がる数の表し方を 2進数 と呼びます。

コンピュータが2進数を使うのは、電気の「オン」と「オフ」、電圧の「高い」と「低い」の2つの状態なら、はっきり区別できるからです。スイッチ1つで 0 か 1 の1けたが表せます。この1けたを ビット と呼び、8ビットをまとめて1 バイト と呼びます。

10進数の各けたが 1、10、100 の重みを持つように、2進数の各けたは右から 1、2、4、8、16 の重みを持ちます。2進数を10進数に直すには、1 が立っているけたの重みを足します。

(10110)2=16+4+2=22(10110)_2 = 16 + 4 + 2 = 22

右下の小さな 2 は、2進数であることを表す印です。

反対に、10進数を2進数に直すには、2 で割り続けて、余りを下から順に並べます。例えば 25 なら、次のようになります。

【25 を2進数に直す】

  • 25 ÷ 2 = 12 余り 1
  • 12 ÷ 2 = 6 余り 0
  • 6 ÷ 2 = 3 余り 0
  • 3 ÷ 2 = 1 余り 1
  • 1 ÷ 2 = 0 余り 1

余りを下から読むと 11001 なので、25=(11001)225 = (11001)_2 です。確かめると、16+8+1=2516 + 8 + 1 = 25 です。

2. 16進数

2進数はけたが長くなり、人が読むには不便です。そこで、0〜9 と A〜F の16種類の文字を使う 16進数 がよく使われます。A が 10、B が 11、…、F が 15 にあたります。

16進数の1けたは、2進数のちょうど4けたにあたります。24=162^4 = 16 だからです。そのため、2進数を右から4けたずつ区切ると、そのまま16進数に直せます。

(1011 0110)2=(B6)16(1011\ 0110)_2 = (\text{B}6)_{16}

1011 は 11 なので B、0110 は 6 です。10進数に直すと、11×16+6=18211 \times 16 + 6 = 182 です。8ビット(1バイト)は、16進数のちょうど2けたで表せます。

たとえるなら、2進数は1円玉だけで払うようなもので、16進数は16円玉という硬貨を使って、枚数を少なくまとめたようなものです。

試験のポイント:2進数 ↔ 16進数は「4けたずつ区切る」、2進数 → 10進数は「重みを足す」、10進数 → 2進数は「2で割って余りを下から読む」です。

このように、2進数は 0 と 1 だけで数を表し、16進数は2進数の4けたを1文字にまとめて読みやすくしたものです。

以上が、2進数と16進数についてです。

論理回路と真理値表:基本の論理演算

1 / 9

次に、論理回路と真理値表について紹介します。

論理回路 は、0 と 1 の入力に対して、決まった規則で 0 か 1 を出力する回路です。入力のすべての組み合わせと、そのときの出力を表にしたものを 真理値表 と呼びます。1つずつ見ていきましょう。

1. AND回路

AND回路 は、入力がすべて 1 のときだけ 1 を出す回路です。「A かつ B」を表し、論理積と呼びます。式では X=A⋅BX = A \cdot B と書きます。

ABX = A·B
000
010
100
111

スイッチ2つを直列につないで電球を点ける回路と同じです。両方のスイッチを入れないと、電球は点きません。

2. OR回路

OR回路 は、入力のどれか1つでも 1 なら 1 を出す回路です。「A または B」を表し、論理和と呼びます。式では X=A+BX = A + B と書きます。

ABX = A+B
000
011
101
111

スイッチ2つを並列につないだ回路と同じです。どちらか一方を入れれば、電球が点きます。ここでの ++ は足し算ではないので、1+1=11 + 1 = 1 です。

3. NOT回路

NOT回路 は、入力を反転させる回路です。1 を入れると 0、0 を入れると 1 を出します。否定と呼び、式では X=A‾X = \overline{A} と書きます。

4. NAND回路

NAND回路 は、AND回路の出力を NOT で反転させた回路です。式では X=A⋅B‾X = \overline{A \cdot B} と書きます。入力がすべて 1 のときだけ 0 を出し、それ以外は 1 を出します。

ABX = NOT(A·B)
001
011
101
110

ここがポイントです。NAND回路だけを組み合わせると、AND・OR・NOT のすべてを作れます。例えば、NAND の2つの入力をつないで同じ信号を入れると、NOT になります。1種類の部品で何でも作れるので、実際の集積回路でよく使われます。

同じように、OR回路の出力を反転させたものを NOR回路と呼びます。2つの入力が違うときだけ 1 を出す回路は、排他的論理和(XOR)回路です。

試験のポイント:真理値表から回路の種類を見分ける問題がよく出ます。「出力が 1 になるのは入力がすべて 1 のときだけ」なら AND、「出力が 0 になるのは入力がすべて 1 のときだけ」なら NAND です。

このように、論理回路は 0 と 1 の入力から決まった規則で出力を作る回路で、その規則は真理値表で表せます。

以上が、論理回路と真理値表についてです。

ブール代数:論理式を簡単にする

1 / 7

続いて、ブール代数について紹介します。

論理回路を式で表して、計算で簡単にする数学を ブール代数 と呼びます。式を簡単にできれば、同じはたらきの回路を、少ない部品で作れます。

ブール代数には、ふつうの代数と似た決まりと、少し違う決まりがあります。

【ブール代数の主な決まり】

  • A+0=AA + 0 = A、A⋅1=AA \cdot 1 = A
  • A+1=1A + 1 = 1、A⋅0=0A \cdot 0 = 0
  • A+A=AA + A = A、A⋅A=AA \cdot A = A
  • A+A‾=1A + \overline{A} = 1、A⋅A‾=0A \cdot \overline{A} = 0
  • 分配の法則: A⋅(B+C)=A⋅B+A⋅CA \cdot (B + C) = A \cdot B + A \cdot C
  • 吸収の法則: A+A⋅B=AA + A \cdot B = A
  • ド・モルガンの法則: A+B‾=A‾⋅B‾\overline{A + B} = \overline{A} \cdot \overline{B}、A⋅B‾=A‾+B‾\overline{A \cdot B} = \overline{A} + \overline{B}

A+1=1A + 1 = 1 のように、ふつうの数とは違う決まりがあります。これは「A または(必ず成り立つこと)」は、いつでも成り立つ、という意味です。

吸収の法則は、身近な言葉で考えると分かりやすくなります。「雨が降っている、または、雨が降っていて風が強い」は、結局「雨が降っている」と同じです。後ろの条件は前の条件に含まれているので、吸収されて消えるのです。

ド・モルガンの法則は、「全体の否定」を「それぞれの否定」に分ける規則です。「A か B のどちらかがある、ではない」は「A もなく、B もない」と同じです。否定の線を分けると、++ と ⋅\cdot が入れかわる、と覚えておきましょう。

例題:論理式を簡単にする

次の論理式を簡単にしましょう。

X=A⋅B+A⋅B‾+A‾⋅BX = A \cdot B + A \cdot \overline{B} + \overline{A} \cdot B

【解き方】

  1. 前の2つの項を AA でくくる: A⋅B+A⋅B‾=A⋅(B+B‾)A \cdot B + A \cdot \overline{B} = A \cdot (B + \overline{B})
  2. B+B‾=1B + \overline{B} = 1 を使う: A⋅1=AA \cdot 1 = A なので、X=A+A‾⋅BX = A + \overline{A} \cdot B
  3. 真理値表で確かめる: (A,B)=(0,0)(A, B) = (0, 0) のとき 0、(0,1)(0, 1) のとき 1、(1,0)(1, 0) のとき 1、(1,1)(1, 1) のとき 1
  4. これは OR回路と同じなので、X=A+BX = A + B

答えは X=A+BX = A + B です。AND を3つと OR を組み合わせる回路が、OR回路1つで済みました。A+A‾⋅B=A+BA + \overline{A} \cdot B = A + B は、よく使う形なので覚えておくと便利です。

このように、ブール代数の決まりを使うと、論理式を簡単にして、少ない部品で同じはたらきの回路を作れます。

以上が、ブール代数についてです。

フリップフロップ:1ビットを記憶する回路

1 / 8

最後に、フリップフロップについて紹介します。

これまでの論理回路は、今の入力だけで出力が決まりました。ところが、コンピュータには「覚えておく」はたらきが欠かせません。前の状態を覚えておき、入力と合わせて出力を決める回路が必要です。

そこで使うのが フリップフロップ です。出力を入力側に戻す(フィードバックする)ことで、0 か 1 の状態を保ち続ける回路で、1ビットを記憶できます。電灯のスイッチが、手を離しても「オン」や「オフ」のままでいるのと似ています。

1. RSフリップフロップ

いちばん基本の形が、RSフリップフロップ です。セット入力 S とリセット入力 R があり、出力を Q とします。NOR回路や NAND回路を2つ、たすき掛けにつないで作ります。

【RSフリップフロップの動き】

  • S = 1、R = 0: Q を 1 にする(セット)
  • S = 0、R = 1: Q を 0 にする(リセット)
  • S = 0、R = 0: 前の状態を保つ(記憶)
  • S = 1、R = 1: 使わない(禁止)

S = 0、R = 0 のときに、前の Q をそのまま保つのが記憶のはたらきです。S と R を同時に 1 にすると、出力が定まらなくなるので使いません。

2. そのほかのフリップフロップ

実際の回路では、クロックと呼ばれる一定の間隔のパルス信号に合わせて動くフリップフロップがよく使われます。

【主なフリップフロップ】

  • Dフリップフロップ: クロックが来た瞬間の入力 D を、出力 Q に写して保つ
  • JKフリップフロップ: RS の禁止の組み合わせ(J = K = 1)のとき、出力を反転させる
  • Tフリップフロップ: クロックが来るたびに、出力を反転させる

Tフリップフロップは、クロック2回で出力が1往復するので、周波数を半分にできます。これを何段もつなぐと、入ってきたパルスの数を2進数で数えるカウンタになります。4段つなげば、0 から 15 まで、24=162^4 = 16 通りを数えられます。

補足(ここは読み飛ばしてOK): コンピュータのメモリやレジスタは、このフリップフロップのような記憶の回路をたくさん並べたものです。8個並べれば1バイト、つまり0〜255の数を1つ覚えられます。

このように、フリップフロップは出力を戻して状態を保つ回路で、1ビットの記憶やカウンタに使われます。

以上が、フリップフロップについてです。

今回のまとめ

1 / 6

それでは、今回の内容を振り返ります。

今回は、2進数と論理回路について紹介しました。数は 0 と 1 の2進数で表し、16進数で読みやすくまとめます。判断は AND・OR・NOT の組み合わせで作り、ブール代数で簡単にできます。そして、フリップフロップが 1ビットを記憶します。0 と 1 だけで、数・判断・記憶のすべてがそろいました。

今回のポイントを振り返りましょう。

振り返り

  • 2進数の各けたの重みは 1、2、4、8…。16進数の1けたは2進数の4けた。
  • AND は全部 1 で 1、OR はどれか 1 で 1、NOT は反転、NAND は全部 1 のときだけ 0。
  • ブール代数では A+1=1A + 1 = 1、A+A⋅B=AA + A \cdot B = A、ド・モルガンの法則で式を簡単にする。
  • フリップフロップは1ビットを記憶する。RS は S でセット、R でリセット、両方 0 で保持。

キーワードのおさらい

  • 2進数: 0 と 1 の2種類で数を表し、2 で繰り上がる表し方
  • 16進数: 0〜9 と A〜F の16種類で数を表す表し方。2進数の4けたが1けた
  • 論理回路: 0 と 1 の入力から、決まった規則で 0 か 1 を出す回路
  • AND回路: 入力がすべて 1 のときだけ 1 を出す回路(論理積)
  • OR回路: 入力のどれかが 1 なら 1 を出す回路(論理和)
  • NOT回路: 入力を反転させる回路(否定)
  • NAND回路: AND の出力を反転させた回路。入力がすべて 1 のときだけ 0
  • 真理値表: 入力のすべての組み合わせと出力を並べた表
  • ブール代数: 論理式を計算して簡単にするための数学
  • フリップフロップ: 0 か 1 の状態を保ち、1ビットを記憶する回路

以上が、今回のまとめです。

さて、0 と 1 で数と判断が表せることが分かりました。では、コンピュータに仕事をさせる手順は、どのように書き表すのでしょうか? そして、電力設備の情報は、どうやって遠くまで届けられているのでしょうか?

次回は、フローチャートとアルゴリズムの読み方、情報伝送を学ぶ「情報伝送と処理」について紹介します。

それでは、次の記事へ進んでいきましょう。

練習問題5問開いて挑戦する
問1. 10進数の45を2進数で表したものとして、正しいものはどれか。
問2. 16進数の3Cを10進数で表したものとして、正しいものはどれか。
問3. 2入力の論理回路に、A = 1、B = 0 を入力したとき、出力が0になる回路はどれか。
問4. 論理式 A⋅B‾\overline{A \cdot B} と等しいものとして、正しいものはどれか。
問5. RSフリップフロップで、S = 0、R = 0 を入力したときの出力Qの説明として、正しいものはどれか。