論理回路(加算器・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 として働く、と覚えておきます。
タイミングチャート=回路を式にしてから波形を照合
結論:タイミングチャート(時間とともに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 です。
シフトレジスタ=クロックごとに1ビットずつ押し出す
結論:シリアル入力パラレル出力のシフトレジスタは、クロックが立ち上がるたびに中身を1つ上位へずらし、そのときのデータを最下位ビットに入れます。 クロックは動作の合図になる一定周期の信号、立上りは0から1に変わる瞬間、ストローブは「ここで値を確定する」という合図の信号です。
8ビットの場合、最も古いビットは上位からあふれて消えます。ストローブより前の最後の8回分が、古い順に上位から並びます。よく出るひっかけは、ビットの並びを逆に読むことと、ストローブより前の立上りの数を数え間違えることの2つです。
タイマーのパルス幅=オーバフロー1回で一周分を足す
結論:経過カウント=2^ビット数×オーバフロー回数+終了値-開始値 で求めます。オーバフローは最大値を超えて0に戻ることです。16ビットなら 2^16=65,536 カウントで一周します。時計の針が12を過ぎて1に戻ったら、12時間分を足して数えるのと同じです。
1MHz のクロックは1カウント=1μs(100万分の1秒)です。最後にカウント数を ms(1000分の1秒)に直します。
全加算器に x=1, y=0, z=1 を入れる
| ア | 0 | 0 |
|---|---|---|
| イ | 0 | 1 |
| ウ | 1 | 0 |
| エ | 1 | 1 |
ア c=0, s=0
イ c=0, s=1
ウ c=1, s=0
エ c=1, s=1
解き方と答えを見る
- 入力の1の個数を数える:1+0+1=2(10進)
- 2を2進数にすると 10
- 上の桁が c(桁上げ)、下の桁が s(和)なので c=1, s=0
- 選択肢の c=1, s=0 はウ
答え:ウ(c=1, s=0)
NAND 4個の回路が何と等価かを真理値表で調べる
ア [図] 入力 A,B から出力 Y への論理和素子(OR)
イ [図] 入力 A,B から出力 Y への論理積素子(AND)
ウ [図] 入力 A,B から出力 Y への排他的論理和素子(XOR)
エ [図] 入力 A,B から出力 Y への否定論理和素子(NOR)
解き方と答えを見る
- N=NAND(A,B)、P=NAND(A,N)、Q=NAND(B,N)、Y=NAND(P,Q) と置く
- A=0,B=0:N=1、P=NAND(0,1)=1、Q=NAND(0,1)=1、Y=NAND(1,1)=0
- A=0,B=1:N=1、P=NAND(0,1)=1、Q=NAND(1,1)=0、Y=NAND(1,0)=1
- A=1,B=0:N=1、P=NAND(1,1)=0、Q=NAND(0,1)=1、Y=NAND(0,1)=1
- A=1,B=1:N=0、P=NAND(1,0)=1、Q=NAND(1,0)=1、Y=NAND(1,1)=0
- Y は 0,1,1,0 で「違っていれば1」なので XOR
答え:ウ(排他的論理和)
NAND を2段つないだ回路の論理式
ア (A+B)・(C+D)
イ A+B+C+D
ウ A・B+C・D
エ A・B・C・D
出典:基本情報技術者試験 科目A免除 修了試験 20210725 実施分 問22
解き方と答えを見る
- 1段目:P=¬(A・B)、Q=¬(C・D)
- 2段目:X=¬(P・Q)=¬(¬(A・B)・¬(C・D))
- ド・モルガン ¬(P・Q)=¬P+¬Q を当てはめる:X=¬¬(A・B)+¬¬(C・D)
- 二重否定は元に戻るので X=A・B+C・D
答え:ウ(A・B+C・D)
NAND 回路のタイミングチャートを選ぶ
ア [図] タイミングチャート。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
解き方と答えを見る
- NAND①は入力2本とも A なので ¬A、NAND②は同様に ¬B
- NAND③=NAND(¬A,¬B)=¬(¬A・¬B)=A+B(ド・モルガン)
- NAND④は入力を束ねているので NOT:Y=¬(A+B)=NOR。A=B=0 の区間だけ Y=1
- イの入力 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 と一致する
- ウはイと同じ入力で、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 の波形なので外す
答え:イ
NOR の RS フリップフロップを x=0,y=1 から x=1,y=0 にする
ア a=0,b=0
イ a=0,b=1
ウ a=1,b=0
エ a=1,b=1
出典:基本情報技術者試験 科目A免除 修了試験 201001 実施分 問25
解き方と答えを見る
- 式を立てる:x=NOR(a, y)、y=NOR(b, x)
- 目標は y を0にすること。NOR は入力に1があれば0を出すので、b=1 にすれば x の値に関係なく y=0
- y=0 になったので、x=NOR(a, 0)。a=0 なら x=NOR(0,0)=1
- 念のため確認:a=1,b=0 では x=0, y=1 のまま。a=b=0 は保持。a=b=1 は両方0
答え:イ(a=0, b=1)
シフトレジスタの確定値を波形から読む
ア 63
イ 8D
ウ B1
エ C6
解き方と答えを見る
- クロックの立上りごとにデータの値を読む(図から):1回目=1、2回目=1、3回目=0、4回目=0、5回目=0、6回目=1、7回目=1、8回目=0、9回目=1
- ストローブは10回目の立上りの直前なので、取り込まれたのは1〜9回目の9ビット
- 8ビットなので1回目のビットは上位からあふれて消え、2〜9回目が古い順に上位から並ぶ:1000 1101
- 4ビットずつ16進数にする:1000=8、1101=D → 8D
答え:イ(8D)
16ビットタイマーで測ったパルス幅
ア 4.900
イ 60.636
ウ 70.436
エ 135.972
出典:基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問9
解き方と答えを見る
- 16ビットの一周は 2^16=65,536 カウント
- オーバフローが1回なので、経過カウント=65,536×1+5,000-100=70,436
- 1MHz なので1カウント=1μs。70,436 カウント=70,436μs
- μ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)
入力がすべて1のときだけ1を出す演算。
⚠ 論理和(OR)は、どれか1つでも1なら1を出す。
入力のどれか1つでも1なら1を出す演算。
⚠ 排他的論理和(XOR)とは、両方1のときだけ結果が違う(ORは1、XORは0)。
2つの入力が違うときに1、同じときに0を出す演算。
⚠ OR と混同しやすい。11の行で0になるのが XOR。
1つの入力の0と1を反転させる演算。
AND の結果を反転したもので、入力がすべて1のときだけ0を出す。
⚠ NOR は OR の反転で、すべて0のときだけ1を出す。
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ビットを記憶する回路。
⚠ 加算器などの組合せ回路は、今の入力だけで出力が決まり、記憶を持たない。
セットとリセットの2入力で出力を切り替える、NOR などをたすき掛けにしたフリップフロップ。
⚠ 両方の入力を1にするのは禁止(NOR 型では出力が両方0になる)。
クロックごとに中身を1ビットずつずらし、端から新しいビットを取り込む記憶回路。
回路が動作するタイミングをそろえるための、一定周期で0と1を繰り返す信号。
データを確定させる瞬間を知らせる合図の信号。
⚠ クロックはデータを取り込む合図、ストローブは値を確定する合図。
カウンタなどが表せる最大値を超えて0に戻ること。
このレッスンの過去問
- 半加算器の構成素子(XORとAND)平成29年度 春期 基本情報技術者試験 午前 問22
- 全加算器の入出力計算平成21年度 秋期 基本情報技術者試験 午前 問25
- NAND素子によるXOR回路構成平成28年度 春期 基本情報技術者試験 午前 問23
- NAND素子による多入力NAND回路構成平成30年度 秋期 基本情報技術者試験 午前 問22
- NAND素子回路の論理式導出(ド・モルガン)基本情報技術者試験 科目A免除 修了試験 20210725 実施分 問22
- NAND素子回路のタイミングチャート導出令和8年度 基本情報技術者試験 科目A 公開問題 問6
- NOR素子RSフリップフロップの状態遷移基本情報技術者試験 科目A免除 修了試験 201001 実施分 問25
- シリアル-パラレル変換シフトレジスタの波形解析令和元年度 秋期 基本情報技術者試験 午前 問21
- タイマー値とオーバフローからのパルス幅計算基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問9