資格道場 › レッスン一覧 › コンピュータ構成要素
コンピュータ構成要素・6/9・16分

論理回路(加算器・NAND・フリップフロップ)

ゴール

半加算器・全加算器の入出力、NAND だけで組んだ回路の正体(XOR・NOR・4入力NAND・A・B+C・D)、NOR の RS フリップフロップ、シフトレジスタの読み取り、タイマーのパルス幅計算を自力で解けるようにする。

論理回路は、0と1のスイッチの組合せだけで足し算や記憶ができることを問う分野です。1回ごとの出題数は少ないものの、真理値表を書けば機械的に解ける問題がほとんどなので、確実に得点しておきたいところです。

このレッスンで稽古する(用語チェック・過去問)

まず基本の論理演算6つを表で押さえる

結論:入力の組合せ(00・01・10・11)ごとの出力を表で覚えれば、この分野の問題は全部解けます。 論理演算とは、0(偽)と1(真)を入力して0か1を返す決まりのことです。電子回路でこの演算をする部品を**素子(ゲート)**と呼びます。

名前 英語 一言で A,B=00 01 10 11
論理積 AND 両方1なら1 0 0 0 1
論理和 OR どちらか1なら1 0 1 1 1
排他的論理和 XOR 違っていれば1 0 1 1 0
否定論理積 NAND ANDの逆 1 1 1 0
否定論理和 NOR ORの逆 1 0 0 0

**否定(NOT)**は入力が1つで、0と1を反転させます。OR と XOR の違いは「11のとき」だけです。OR は1、XOR は0を返します。試験ではこの1マスの違いがよく狙われます。

半加算器=和は XOR、桁上げは AND(最頻出)

結論:半加算器(1桁の2進数どうしを足す回路)は、和を XOR、桁上げを AND で出します。 2進数の1桁の足し算を書き出すと理由が分かります。小学校の筆算で、1の位の答えと「次の位へ1繰り上がる」を分けて書くのと同じです。

x y 計算 c(桁上げ) z(和の1桁目)
0 0 0+0=0 0 0
0 1 0+1=1 0 1
1 0 1+0=1 0 1
1 1 1+1=10 1 0

z の列は「違っていれば1」なので XOR です。c の列は「両方1のときだけ1」なので AND です。

flowchart LR
  X["入力 x"] --> A["素子A:XOR"]
  Y["入力 y"] --> A
  X --> B["素子B:AND"]
  Y --> B
  A --> Z["z:和の1桁目"]
  B --> C["c:桁上げ"]

問われ方:素子の組合せを表から選ぶ問題(答えは「A:XOR、B:AND」)と、回路図4つから選ぶ問題があります。回路図の問題では、出力の名前(X・Y)が和と桁上げのどちらを指すかが問題ごとに入れ替わります。ゲートの名前ではなく、問題文の「X に桁上がり」といった定義を読んでから照合してください。和を OR で作った回路は 1+1 のとき1を出してしまうので誤りです。

全加算器=3つの入力を足して2進数で答える

結論:全加算器は x+y+z(z は下の桁からの桁上げ)を計算し、合計を2桁の2進数(c と s)で出します。 1の個数を数えるだけで答えられます。

入力の1の個数 合計(10進) c(桁上げ) s(和)
0個 0 0 0
1個 1 0 1
2個 2 1 0
3個 3 1 1

中身は半加算器2個と OR 1個でできています。ただし試験で回路の中身まで問われることはまれで、上の表だけで足ります。ひっかけ:c と s を入れ替えた選択肢(c=0, s=1)が必ず用意されています。

NAND だけで何でも作れる(NOT・AND・XOR)

結論:NAND の2本の入力を束ねると NOT になり、NAND の後に NOT をつなぐと AND になります。 そのため、NAND だけを組み合わせて任意の回路を作れます。試験では「この NAND の回路は何と同じか」を問われます。

作り方 できるもの 理由
NAND の入力2本に同じ信号A NOT A NAND(A,A)=¬(A・A)=¬A
NAND → NOT(束ねた NAND) AND 否定の否定で元に戻る
まず A と B をそれぞれ NOT し、その2つを NAND OR ¬A NAND ¬B = A+B
NAND(A,B)=N を作り、NAND(A,N) と NAND(B,N) をさらに NAND XOR 真理値表で確認できる(例題参照)

**4入力 NAND(4つ全部が1のときだけ0)**は、2入力 NAND を次の手順でつないで作ります。(1)NAND(A,B) を NOT して A・B を作る。(2)同様に C・D を作る。(3)最後に2入力 NAND で ¬(A・B・C・D) にする。NOT の段を省いて NAND を2段つないだだけの回路は A・B+C・D になり、4入力 NAND にはなりません。 入力が8本ある回路も、問題の条件に合わないので外します。

NAND 回路を式に直す=ド・モルガンの法則

結論:NAND を2段つないだ回路は「積の和」(A・B+C・D)になります。 変形に使うのはド・モルガンの法則です。全体にかかった否定を分配すると、・と+が入れ替わります。

  • ¬(P・Q) = ¬P+¬Q
  • ¬(P+Q) = ¬P・¬Q

NAND(A,B) と NAND(C,D) の出力を3つ目の NAND に入れると、X=¬(¬(A・B)・¬(C・D)) です。ド・モルガンで外側の否定を分配すると ¬¬(A・B)+¬¬(C・D) になり、二重否定が消えて A・B+C・D が残ります。ひっかけ:最後の NAND を「AND の仲間だから」と考えて A・B・C・D を選ばせます。入力の手前に否定がかかった NAND は OR として働く、と覚えておきます。

ABNANDCDNAND¬(A・B)¬(C・D)NANDOR として働くXX=¬(¬(A・B)・¬(C・D))=A・B+C・D
NAND を2段つなぐと、前段の出力 ¬(A・B) と ¬(C・D) が最後の NAND に入ります。最後の NAND は OR として働くので、X=A・B+C・D になります。

タイミングチャート=回路を式にしてから波形を照合

結論:タイミングチャート(時間とともに0と1が切り替わる信号を並べた図)の問題では、波形を目で追う前に回路が何のゲートと同じかを確定させます。 次に、点線で区切られた区間ごとに A・B の値を読み、出力の真理値表に当てはめて Y を照合します。

2026年の問題の回路は、NAND を NOT として使って A と B を反転し、その2つを NAND に入れ(ここまでで OR)、最後にもう一度 NOT しています。全体は Y=¬(A+B)=NOR で、A と B が両方0の区間だけ Y が1 になります。

選択肢には NOR・XOR・NAND・AND の出力波形が混ざっています。また、選択肢ごとに入力波形が違うことがあります。「どれも同じ入力だろう」と決めつけず、選択肢ごとに A・B を読み直してください。

RS フリップフロップ=状態を覚えておく回路

結論:フリップフロップは、入力を戻した後も直前の出力を保持する回路(1ビットの記憶)です。 NOR 2個の出力をそれぞれ相手の入力に戻した(たすき掛けにした)ものを RS フリップフロップと呼びます。照明の「点灯ボタン」と「消灯ボタン」のようなもので、どちらも押していないときは今の状態のままです。

仕組みは「NOR は入力のどれかが1なら必ず0を出す」の1点だけです。x=NOR(a, y)、y=NOR(b, x) の回路で、x=0, y=1 から始めた場合は次のとおりです。

a b 結果
0 0 保持(x=0, y=1 のまま)
0 1 y が0に落ち、x=1, y=0 に変わる
1 0 x=0, y=1(変化なし)
1 1 x=y=0(両方0になるので使わない=禁止)

見破り方:1を入れた側の NOR の出力が0になります。b=1 なら y=0 です。

a=0NORx=1b=1NORy=01を入れた側(b)の出力 y が0になるy=0 が戻り、x=NOR(0,0)=1 になる
2つの NOR の出力を、たすき掛けで相手の入力に戻した RS フリップフロップです。a=0、b=1 を入れると y が0に落ち、その0が戻って x=1 になります。

シフトレジスタ=クロックごとに1ビットずつ押し出す

結論:シリアル入力パラレル出力のシフトレジスタは、クロックが立ち上がるたびに中身を1つ上位へずらし、そのときのデータを最下位ビットに入れます。 クロックは動作の合図になる一定周期の信号、立上りは0から1に変わる瞬間、ストローブは「ここで値を確定する」という合図の信号です。

8ビットの場合、最も古いビットは上位からあふれて消えます。ストローブより前の最後の8回分が、古い順に上位から並びます。よく出るひっかけは、ビットの並びを逆に読むことと、ストローブより前の立上りの数を数え間違えることの2つです。

上位最下位d1d2d3d4d5d6d7d8立上り1回で1つ上位へd1d2d3d4d5d6d7d8d9d1:上位からあふれて消えるd9:そのときのデータが最下位に入るストローブ前の最後の8回分が古い順に上位から並ぶ
8ビットのシフトレジスタです。クロックが1回立ち上がるごとに中身が1つ上位へずれ、最も古い d1 は上位からあふれて消えます。新しいデータ d9 は最下位ビットに入ります。

タイマーのパルス幅=オーバフロー1回で一周分を足す

結論:経過カウント=2^ビット数×オーバフロー回数+終了値-開始値 で求めます。オーバフローは最大値を超えて0に戻ることです。16ビットなら 2^16=65,536 カウントで一周します。時計の針が12を過ぎて1に戻ったら、12時間分を足して数えるのと同じです。

1MHz のクロックは1カウント=1μs(100万分の1秒)です。最後にカウント数を ms(1000分の1秒)に直します。

65,535(16ビットの最大)開始値終了値オーバフロー→0時間経過=65,536×1+終了値-開始値1MHz なら 1カウント=1μs
16ビットのタイマーの値は 65,535 を超えると0に戻ります。オーバフローが1回あれば、65,536 カウント(一周分)を足してから終了値-開始値を加えます。
例題 1

全加算器に x=1, y=0, z=1 を入れる

図は全加算器を表す論理回路である。図中の x に 1,y に 0,z に 1 を入力したとき,出力となる c(けた上げ数),s(和)の値はどれか。
「全加算器」ブロックに入力 x,y,z(左),出力 c,s(右)。選択肢は表: | | c | s |
ア00
イ01
ウ10
エ11

ア c=0, s=0
イ c=0, s=1
ウ c=1, s=0
エ c=1, s=1

出典:平成21年度 秋期 基本情報技術者試験 午前 問25

解き方と答えを見る
  1. 入力の1の個数を数える:1+0+1=2(10進)
  2. 2を2進数にすると 10
  3. 上の桁が c(桁上げ)、下の桁が s(和)なので c=1, s=0
  4. 選択肢の c=1, s=0 はウ

答え:ウ(c=1, s=0)

例題 2

NAND 4個の回路が何と等価かを真理値表で調べる

図の論理回路と等価な回路はどれか。
NAND 素子 4 個から成る回路。入力 A,B を NAND1 に入力し,その出力を N とする。A と N を NAND2 に,B と N を NAND3 に入力する。NAND2 と NAND3 の出力を NAND4 に入力し,その出力が Y。

ア [図] 入力 A,B から出力 Y への論理和素子(OR)
イ [図] 入力 A,B から出力 Y への論理積素子(AND)
ウ [図] 入力 A,B から出力 Y への排他的論理和素子(XOR)
エ [図] 入力 A,B から出力 Y への否定論理和素子(NOR)

出典:平成28年度 春期 基本情報技術者試験 午前 問23

解き方と答えを見る
  1. N=NAND(A,B)、P=NAND(A,N)、Q=NAND(B,N)、Y=NAND(P,Q) と置く
  2. A=0,B=0:N=1、P=NAND(0,1)=1、Q=NAND(0,1)=1、Y=NAND(1,1)=0
  3. A=0,B=1:N=1、P=NAND(0,1)=1、Q=NAND(1,1)=0、Y=NAND(1,0)=1
  4. A=1,B=0:N=1、P=NAND(1,1)=0、Q=NAND(0,1)=1、Y=NAND(0,1)=1
  5. A=1,B=1:N=0、P=NAND(1,0)=1、Q=NAND(1,0)=1、Y=NAND(1,1)=0
  6. Y は 0,1,1,0 で「違っていれば1」なので XOR

答え:ウ(排他的論理和)

例題 3

NAND を2段つないだ回路の論理式

図の NAND ゲートの組合せ回路で,入力 A, B, C, D に対する出力 X の論理式はどれか。ここで,論理式中の“・”は論理積,“+”は論理和を表す。
NAND ゲート 3 個の回路。1 個目の NAND の入力は A,B,2 個目の NAND の入力は C,D。両 NAND の出力が 3 個目の NAND の二つの入力に接続され,3 個目の出力が X。

ア (A+B)・(C+D)
イ A+B+C+D
ウ A・B+C・D
エ A・B・C・D

出典:基本情報技術者試験 科目A免除 修了試験 20210725 実施分 問22

解き方と答えを見る
  1. 1段目:P=¬(A・B)、Q=¬(C・D)
  2. 2段目:X=¬(P・Q)=¬(¬(A・B)・¬(C・D))
  3. ド・モルガン ¬(P・Q)=¬P+¬Q を当てはめる:X=¬¬(A・B)+¬¬(C・D)
  4. 二重否定は元に戻るので X=A・B+C・D

答え:ウ(A・B+C・D)

例題 4

NAND 回路のタイミングチャートを選ぶ

図の回路の A 及び B に信号を入力したときに,Y に出力される信号のタイミングチャートとして,適切なものはどれか。
回路: NAND 素子 3 段 + 1 段。1 段目の NAND① は入力 A を 2 本とも入力に接続(A の否定)、NAND② は入力 B を 2 本とも接続(B の否定)。NAND③ は NAND①と NAND②の出力を入力とする。NAND④ は NAND③の出力を 2 本の入力に接続し、出力が Y。 タイミングチャートの各選択肢は A,B,Y の 3 波形を、点線の区切り(6 本)で分かれる 7 区間(左端から右端)で読んだ値。区間の割り当ては図の点線位置に基づく目視読み取り。

ア [図] タイミングチャート。A: 0,0,1,0,1,0,1 / B: 1,0,1,0,1,0,0 / Y: 1,1,0,1,0,1,1(点線で区切った 7 区間の値)
イ [図] タイミングチャート。A: 0,1,0,0,0,1,0 / B: 0,0,0,1,0,1,0 / Y: 1,0,1,0,1,0,1(7 区間)
ウ [図] タイミングチャート。A: 0,1,0,0,0,1,0 / B: 0,0,0,1,0,1,0 / Y: 0,1,0,1,0,0,0(7 区間)
エ [図] タイミングチャート。A: 0,0,1,0,1,0,1 / B: 1,0,1,0,1,0,0 / Y: 0,0,1,0,1,0,0(7 区間)

出典:令和8年度 基本情報技術者試験 科目A 公開問題 問6

解き方と答えを見る
  1. NAND①は入力2本とも A なので ¬A、NAND②は同様に ¬B
  2. NAND③=NAND(¬A,¬B)=¬(¬A・¬B)=A+B(ド・モルガン)
  3. NAND④は入力を束ねているので NOT:Y=¬(A+B)=NOR。A=B=0 の区間だけ Y=1
  4. イの入力 A=0,1,0,0,0,1,0 / B=0,0,0,1,0,1,0 で、A・B が両方0なのは1・3・5・7区間目。NOR は 1,0,1,0,1,0,1 となり、イの Y と一致する
  5. ウはイと同じ入力で、Y(0,1,0,1,0,0,0)が XOR の波形なので外す。ア・エは別の入力波形(A=0,0,1,0,1,0,1 / B=1,0,1,0,1,0,0)で、アは NAND、エは AND の波形なので外す

答え:イ

例題 5

NOR の RS フリップフロップを x=0,y=1 から x=1,y=0 にする

図の回路において出力が x=0,y=1 である状態から,x=1,y=0 に変える入力 a 及び b の組合せはどれか。ここで,(NOR 記号)は否定論理和を表す。
NOR 素子 2 個のクロス結合(RS フリップフロップ)。上の NOR: 入力 a と,下の NOR の出力 y からの帰還線 → 出力 x。下の NOR: 入力 b と,上の NOR の出力 x からの帰還線 → 出力 y。x,y の出力線は分岐点(●)で帰還線へ接続され,たすき掛けに交差して相手側 NOR の入力へ入る。

ア a=0,b=0
イ a=0,b=1
ウ a=1,b=0
エ a=1,b=1

出典:基本情報技術者試験 科目A免除 修了試験 201001 実施分 問25

解き方と答えを見る
  1. 式を立てる:x=NOR(a, y)、y=NOR(b, x)
  2. 目標は y を0にすること。NOR は入力に1があれば0を出すので、b=1 にすれば x の値に関係なく y=0
  3. y=0 になったので、x=NOR(a, 0)。a=0 なら x=NOR(0,0)=1
  4. 念のため確認:a=1,b=0 では x=0, y=1 のまま。a=b=0 は保持。a=b=1 は両方0

答え:イ(a=0, b=1)

例題 6

シフトレジスタの確定値を波形から読む

クロックの立上りエッジで,8 ビットのシリアル入力パラレル出力シフトレジスタの内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む。また,ストローブの立上りエッジで値を確定する。各信号の波形を観測した結果が図のとおりであるとき,確定後のシフトレジスタの値はどれか。ここで,数値は 16 進数で表記している。
タイミング図(横軸: 時間)。信号は上からデータ,ストローブ,クロック。クロックは 10 周期分の矩形波(点線は各立上りエッジ位置)。データ: 初めは H,2 番目の立上り直後に L に下がり,5 番目の立上りの後に H に戻り,7 番目の立上りの後に L に下がり,9 番目付近で H に戻って最後まで H。ストローブ: 通常 L で,最後(10 番目)のクロック立上り直前に H のパルスが 1 回入る。

ア 63
イ 8D
ウ B1
エ C6

出典:令和元年度 秋期 基本情報技術者試験 午前 問21

解き方と答えを見る
  1. クロックの立上りごとにデータの値を読む(図から):1回目=1、2回目=1、3回目=0、4回目=0、5回目=0、6回目=1、7回目=1、8回目=0、9回目=1
  2. ストローブは10回目の立上りの直前なので、取り込まれたのは1〜9回目の9ビット
  3. 8ビットなので1回目のビットは上位からあふれて消え、2〜9回目が古い順に上位から並ぶ:1000 1101
  4. 4ビットずつ16進数にする:1000=8、1101=D → 8D

答え:イ(8D)

例題 7

16ビットタイマーで測ったパルス幅

1MHzのクロックでカウントアップする16ビットタイマーを用いて,パルスの幅を測定する。パルスの立上がり時のタイマー値が100,立下がり時のタイマー値が5,000で,立上がりから立下がりまでの間に1度だけタイマーがオーバーフローした。このとき,立上がりから立下がりまでのパルス幅は何ミリ秒か。

ア 4.900
イ 60.636
ウ 70.436
エ 135.972

出典:基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問9

解き方と答えを見る
  1. 16ビットの一周は 2^16=65,536 カウント
  2. オーバフローが1回なので、経過カウント=65,536×1+5,000-100=70,436
  3. 1MHz なので1カウント=1μs。70,436 カウント=70,436μs
  4. μs を ms にするため1000で割る:70,436÷1000=70.436ms

答え:ウ(70.436 ミリ秒)

要点(試験直前に読む)

  • 半加算器:和=XOR、桁上げ=AND。OR と XOR の違いは11の行だけ
  • 全加算器:入力の1の個数を2進数にする(2個なら c=1, s=0)
  • NAND の入力を束ねると NOT。NAND→NAND の2段は A・B+C・D(ド・モルガン)
  • NAND で反転してから NAND に入れると OR になり、最後に NOT すると NOR
  • NOR の RS フリップフロップ:1を入れた側の出力が0になる。両方0なら保持、両方1は禁止
  • タイマー:65,536×オーバフロー回数+終了値-開始値。1MHz なら1カウント=1μs

ひっかけ

  • 半加算器の回路図の問題で、出力 X・Y が和と桁上げのどちらかは問題ごとに違う。ゲートの名前ではなく問題文の定義で照合する
  • 全加算器の c と s を入れ替えた選択肢が必ずある。上の桁が c と覚えておく
  • 4入力 NAND の問題では、NOT の段がなく NAND を2段つないだだけの回路(A・B+C・D)や、入力が8本の回路を外す
  • タイミングチャートは選択肢ごとに入力波形が違うことがある。選択肢ごとに A・B を読み直してから Y を照合する
  • シフトレジスタはビットを逆順に読んだ値(8D に対する B1)や、取り込む区間を1回ずらした値(C6)がひっかけ。タイマーはオーバフロー分の足し忘れ(4.900)や引き算の向きの誤り(60.636)に注意

用語(18)

論理積 ろんりせき(AND)
入力がすべて1のときだけ1を出す演算。
⚠ 論理和(OR)は、どれか1つでも1なら1を出す。
論理和 ろんりわ(OR)
入力のどれか1つでも1なら1を出す演算。
⚠ 排他的論理和(XOR)とは、両方1のときだけ結果が違う(ORは1、XORは0)。
排他的論理和 はいたてきろんりわ(XOR:Exclusive OR)
2つの入力が違うときに1、同じときに0を出す演算。
⚠ OR と混同しやすい。11の行で0になるのが XOR。
否定 ひてい(NOT)
1つの入力の0と1を反転させる演算。
否定論理積 ひていろんりせき(NAND:Not AND)
AND の結果を反転したもので、入力がすべて1のときだけ0を出す。
⚠ NOR は OR の反転で、すべて0のときだけ1を出す。
否定論理和 ひていろんりわ(NOR:Not OR)
OR の結果を反転したもので、入力がすべて0のときだけ1を出す。
⚠ NAND と取り違えやすい。「全部0で1」が NOR、「全部1で0」が NAND。
真理値表 しんりちひょう
入力の全組合せについて出力を並べた表で、回路の動作を確かめるのに使う。
半加算器 はんかさんき
1桁の2進数2つを足し、和(XOR)と桁上げ(AND)を出す回路。
⚠ 全加算器は、下の桁からの桁上げも含めた3入力を足す。
全加算器 ぜんかさんき
2つの1桁の2進数と下の桁からの桁上げ、の3つを足して和と桁上げを出す回路。
⚠ 半加算器は入力が2つだけ。全加算器は入力が3つ。
桁上げ けたあげ(キャリー)
足し算の結果が1桁に収まらないとき、上の桁へ送る1。
⚠ 和(和の1桁目)と入れ替えた選択肢が出る。
ド・モルガンの法則 どもるがんのほうそく
全体にかかった否定を中に分配すると、積(・)と和(+)が入れ替わるという法則。
タイミングチャート たいみんぐちゃーと
時間の経過に沿って、各信号の0と1の変化を並べて描いた図。
フリップフロップ ふりっぷふろっぷ
入力が変わるまで直前の出力を保持できる、1ビットを記憶する回路。
⚠ 加算器などの組合せ回路は、今の入力だけで出力が決まり、記憶を持たない。
RSフリップフロップ あーるえすふりっぷふろっぷ(Reset-Set flip-flop)
セットとリセットの2入力で出力を切り替える、NOR などをたすき掛けにしたフリップフロップ。
⚠ 両方の入力を1にするのは禁止(NOR 型では出力が両方0になる)。
シフトレジスタ しふとれじすた
クロックごとに中身を1ビットずつずらし、端から新しいビットを取り込む記憶回路。
クロック くろっく
回路が動作するタイミングをそろえるための、一定周期で0と1を繰り返す信号。
ストローブ すとろーぶ
データを確定させる瞬間を知らせる合図の信号。
⚠ クロックはデータを取り込む合図、ストローブは値を確定する合図。
オーバフロー おーばふろー
カウンタなどが表せる最大値を超えて0に戻ること。

このレッスンの過去問

このレッスンで稽古する