メインコンテンツへ
ハードウェア論理回路応用

全加算器(full adder)に関する記述として、最も適切なものはどれか。入力はA、B、下位からの桁上がりCin、出力は和Sと上位への桁上がりCoutとする。

ア.Cout = A AND B AND Cin であり、3入力すべてが1のときだけ桁上がりが発生する。
イ.Cout = (A AND B) OR (Cin AND (A XOR B)) であり、A,B,Cinの3入力のうち2つ以上が1なら桁上がりが発生する。正解
ウ.Cout = A OR B OR Cin であり、1つでも入力が1なら桁上がりが発生する。
エ.全加算器は半加算器1個と同じ回路で構成でき、Cinは無視される。

解説

全加算器は「下からの繰り上がりも受け取れる多段加算器」。3つの入力ビットを足したとき、過半数(2個以上)が1なら必ず桁あふれが起きる、という「多数決ルール」で桁上がりを判定します。

なぜ イ が正解か

イが正解。全加算器の真理値表で出力Coutを観察すると、(A,B,Cin)の3ビット中1の数が2個以上のときCout=1になる。これを論理式で表すと Cout = (A AND B) OR (Cin AND (A XOR B))。これは「AとBが両方1で桁上がり」または「AかBどちらか1でCinも1なら桁上がり」を意味し、まさに3入力の多数決回路(majority gate)。

なぜ ア は間違いか

3入力すべて1のときのみ桁上がりだとすると、1+1+0=10で桁上がりが必要なケースを見落とす。正しくは2個以上の1で桁上がりが発生する。

なぜ ウ は間違いか

OR一発で桁上がりが発生すると1+0+0でCout=1になってしまい、和は01のはずなのに桁上がりが立つ誤った加算になる。1個だけの1では桁上がりは起きない。

なぜ エ は間違いか

全加算器は下位からのCinを受け取る点で半加算器とは異なる回路。半加算器2個+ORゲート1個で全加算器を構成するのが一般的で、Cinを無視することはできない。

出典: AI生成問題(学習用)