IT初心者のための 論理回路 入門 ~ 基本情報ではじめるコンピュータ科学の基礎理論(3)


2023-07-24 更新

この連載は、これから IT の勉強をはじめる人を対象としたものです。 基本情報技術者試験の出題分野ごとに、仕組み、主要な用語、および過去問題を紹介します。 受験対策としてだけでなく、 IT の基礎知識を幅広く得るために、ぜひお読みください。

今回は、「コンピュータ科学の基礎理論」その 3 として「 論理回路 」の分野を取り上げます。

論理回路の種類と MIL 記号

コンピュータの内部では、あらゆるデータが 2 進数で取り扱われています。

コンピュータの内部には、 2 進数の論理演算を行う電気的な仕組みが数多くあり 、それらを 論理回路 と呼びます。

基本的な論理回路の種類には、以下があります。

  • AND 回路
  • OR 回路
  • NOT 回路
  • XOR 回路
  • NAND 回路
  • NOR 回路

これらの論理回路を組み合わせて、様々なコンピュータの機能が実現されているのです。

論理回路を図示するときには、図 1 に示した図記号が使われます。

図 1 論理回路の図記号( MIL 記号)
図記号 説明
論理積素子( AND )
否定論理積素子( NAND )
論理和素子( OR )
否定論理和素子( NOR )
排他的論理和素子( XOR )
論理一致素子
バッファ
論理否定器( NOT )
スリーステートバッファ
素子や回路の入力部又は出力部に示される ○ 印は,論理状態の反転又は否定を表す。
出典 基本情報技術者試験 科目 A サンプル問題

これらは、もともと米国の軍事規格だったので、 MIL 記号 ( MIL は、 military =「軍事」という意味)と呼ばれます。

1 本の電線(直線で表します)で 1 ビットの 2 進数が伝えられ、図記号の左側の電線からデータが入力され、論理回路の中で論理演算が行われ、その結果が図記号の右側の電線から出力されます。

 

まず、 AND 回路、 OR 回路、 NOT 回路の図記号を覚えてください。

NOT 回路の出力側にある白丸は、データを反転する( 0 を 1 に、 1 を 0 にする)ことを意味しています。

このことから、次に、 AND 回路の図記号の出力側に白丸をつけると、 AND 演算の結果を反転する NAND 回路の図記号になり、 OR 回路の図記号の出力側に白丸をつけると、 OR 演算の結果を反転する NOR 回路の図記号になることを覚えてください。

 

NAND(ナンド) は、 NOT AND という意味です。 NOR(ノア) は、 NOT OR という意味です。 XOR 回路の出力側に白丸を付けた NOT XOR を意味する図記号もあります。

 

NOT 回路の出力側の白丸を取ると、バッファになります。

バッファは、入力したデータをそのまま出力します。 何も演算をしませんが、入力したデータの電気信号を回復させる機能があります。 スリーステートバッファは、上から下に向いた電線で、データの通過を制御(通過させる / 通過させない)できます。

半加算器と全加算器の仕組み

基本的な論理回路を組み合わせて、コンピュータの機能を実現する例として、 半加算器全加算器 と紹介しましょう。

コンピュータの利用者からは、コンピュータには加減乗除の算術演算が行えるように見えますが、実際にはそうではありません。 基本的な論理回路を組み合わせて、算術演算を実現しているのです。

加算を例にして、論理回路を組み合わせて算術演算を実現する仕組みを説明しましょう。

 

0101 + 0011 という 4 ビットの加算を行うとします。

この場合に、最下位桁では、それぞれの桁の数値を加算するだけ( 2 つの 1 ビットの数値を加算するだけ)ですが、最下位桁より上位の桁では、それぞれの桁の数値と下位桁からの桁上がりの数値を加算する( 3 つの 1 ビットの数値を加算する)ことになります。

2 つの 1 ビットの数値を加算する回路を 半加算器 ( half adder )と呼び、 3 つの 1 ビットの数値を加算する回路を 全加算器 ( full adder )と呼びます。

なぜ「半」と「全」なのかというと、半加算器を 2 つ使うと全加算器になるからです。

半加算器の仕組み

半加算器の仕組みを説明しましょう。

2 つの 1 ビットの数値を加算するパターンは、
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
です。

結果が 2 ビットになる場合があるので、すべての結果を 2 ビットに揃えると、
0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10
です。

図 2 は、加算する2つの1ビットの数値に X 、Y 、結果の桁上がりに C ( Carry = 「桁上がり」という意味です)、結果の 1 桁目に S ( Sum = 「和」という意味です)という名前を付けて、加算のパターンを示したものです。

図 2 2 つの 1 ビットの数値を加算するパターン
X Y C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

X XOR Y で
得られる
X AND Y で
得られる
X XOR Y
で得られる
X AND Y
で得られる

これを見ると、
C は、 X と Y の両方が 1 のときに 1 になることがわかります。
この結果は、 X AND Y で得られます。

S は、 X と Y のどちらか一方だけが 1 のときに 1 になることがわかります。
この結果は、 X XOR Y で得られます。

 

したがって、 2 つの 1 ビットの数値を加算する半加算器は、図 3 に示したように、 AND 回路と OR 回路を組合せて実現できます。

図 3 2 つの 1 ビットの数値を加算する半加算器の仕組み

全加算器の仕組み

全加算器では、それぞれの桁の数値( X と Y という名前を付けます)と、下位桁からの桁上がりの数値( Cin = Carry in という名前を付けます)を加算します。

そのためには、 2 つの半加算器を使って、 X と Y を 1 つ目の半加算器で加算し、その結果の S と Cin を 2 つの半加算器で加算し、その結果を全加算器の S とすればよいのです。

いずれかの半加算器で桁上がりが生じたときに、全加算器の C が 1 になります(これは、 3 つの 1 ビットの数値を加算するパターンを書き出せば確認できます)。

この結果は、 2 つの半加算器の C を OR 演算すれば得られます。 図 4 に全加算器の仕組みを示します。 ここでは、半加算器の内部の仕組み(図 3 と同じです)を省略しています。

図 4 3 つの 1 ビットの数値を加算する全加算器の仕組み

論理回路の過去問題

論理回路の分野の過去問題を 3 問ほど紹介しましょう。

論理回路の機能に関する問題

最初は、論理回路の機能に関する問題です。

問 22 平成 31 年度 春期

二つの入力と一つの出力をもつ論理回路で、二つの入力 A ,B がともに 1 のときだけ、出力 X が 0 になる回路はどれか。


ア AND 回路  イ NAND 回路
ウ OR 回路  エ XOR 回路

論理回路の機能は、英語の意味から理解することができます。

ア AND 回路
AND が「かつ」という意味なので、「入力の A が 1 かつ B が 1 のときに出力の X が 1 になる」です。
イ NAND 回路
NAND が NOT AND という意味なので、 AND の結果が NOT (「~でない」という意味)で反転され、「入力の A が 1 かつ B が 1 のときに出力の X が 0 になる」です。
ウ OR 回路
OR が「または」という意味なので、「入力の A が 1 または B が 1 のときに出力の X が 1 になる」です。
エ XOR 回路
XOR が「排他的なまたは( eXclusive OR )」という意味なので、「入力の A または B のどちらか一方だけ(これが排他的ということです)が 1 のときに出力の X が 1 になる」です。
これは「入力の A と B が不一致のときに出力の X が 1 になる」と考えることもできます。 先ほど図 1 に示した論理回路で、 NOT XOR を意味する図記号の説明が「論理一致素子」だったのは、 XOR が不一致なら 1 になるので、 NOT XOR は一致なら 1 になるからです。

この問題では、

二つの入力 A 、 B がともに 1 のときだけ、出力 X が 0 になる回路

を答えるので、選択肢イの NAND 回路が正解です。

 

解答

MIL 記号で示された回路図を読み取る問題

次は、MIL 記号で示された回路図を読み取る問題です。

問 22 令和元年度 秋期

次の回路の入力と出力の関係として、正しいものはどれか。


入力 出力
A B X
0 0 0
0 1 0
1 0 0
1 1 1

入力 出力
A B X
0 0 0
0 1 1
1 0 1
1 1 0

入力 出力
A B X
0 0 1
0 1 0
1 0 0
1 1 0

入力 出力
A B X
0 0 1
0 1 1
1 0 1
1 1 0

論理演算や論理回路に慣れている人なら

  1. この回路図は (NOT A AND B) OR (A AND NOT B) という演算を行っている
  2. これは A XOR B と同じである
  3. XOR 演算は A と B のどちらか一方だけが 1 のときに出力が 1 になる
  4. これに該当するのは選択肢イである

と考えて、すぐに答えがわかるでしょう。

論理演算や論理回路に慣れていない人は、入力の A と B に具体的な値を設定して、回路図にデータの変化を書き込んで、出力の X が何になるかを確認するとよいでしょう。

例として、まず、入力の A に 0 、 B に 0 を設定してみましょう。

図 5-1 入力に具体的な値を設定し、回路図にデータの変化を書き込んで、出力が何になるかを確認する
Aに 0 、 B に 0 を設定した場合

図 5-1 に示したように出力の X は、 0 になります。 これに該当するのは、選択肢アと選択肢イです。答えを 2 つに絞り込めました。

 

次に、入力の A に 1 、 B に 1 を設定してみましょう(選択肢アと選択肢イで出力が同じになっていないなら、他のパターンでも OK です)。

図 5-2 A に 1 、 B に 1 を設定した場合

出力の X は、選択肢アでは 1 であり、選択肢イでは 0 です。 回路図にデータの変化を書き込むと、出力の X は 0 になります。 したがって、選択肢イが正解です。

 

解答

半加算器の仕組みに関する問題

最後は、半加算器の仕組みに関する問題です。

問 22 平成 29 年度 春期 午前

図に示す, 1 桁の 2 進数 x と y を加算して, z ( 和の 1 桁目 ) 及び c ( 桁上げ )を出力する半加算器において, A と B の素子の組合せとして,適切なものはどれか。

A B
排他的論理和 論理積
否定論理積 否定論理和
否定論理和 排他的論理和
論理積 論理和

もしも、半加算器の仕組みを忘れてしまった場合は、以下に示したように、 2 つの 1 ビットの数値を加算するパターンを書き出してみるとよいでしょう。

0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10

このパターンを見れば、
「桁上がりは x と y が両方とも 1 のときに 1 になるので AND 演算だ」
「和の 1 桁目は x と y のどちらか一方だけが 1 のときに 1 になるので XOR 演算だ」
ということを思い出せるでしょう。

選択肢では、論理演算の名称が日本語で示されています。

AND 演算は「論理積」、 XOR 演算は「排他的論理和」なので、選択肢アが正解です。

 

解答

今回は、「基礎理論」その 3 として、「論理回路」の分野から、論理回路の種類と MIL 記号、半加算器と全加算器の仕組み、および過去問題を紹介しました。

次回(最終回)は、「 データ構造とアルゴリズム 」の分野を取り上げます。

それでは、またお会いしましょう!

label 関連タグ
科目A試験は、
免除できます。
独習ゼミで科目A試験を1年間免除して、科目B試験だけに集中しましょう。
免除試験を受けた 74.9% の方が、
科目A免除資格を得ています。
科目A免除試験 最大 2 回の
受験チャンス !
info_outline
科目A免除試験 最大 2 回の
受験チャンス !
詳しく見てみるplay_circle_filled
label これまでの『基本情報ではじめる IT の勉強』の連載一覧 label 著者