半加算器の真理値表から素子の役割を見分ける
基本情報技術者試験 平成29年度春期 午前 問22 / ハードウェア › ハードウェア
過去問にチャレンジ
図に示す,1桁の2進数xとyを加算して,z(和の1桁目)及びc(桁上げ)を出力する半加算器において,AとBの素子の組合せとして,適切なものはどれか。


- ア
A:排他的論理和,B:論理積
- イ
A:否定論理積,B:否定論理和
- ウ
A:否定論理和,B:排他的論理和
- エ
A:論理積,B:論理和
会話形式の解説
講師図では、xとyがAとBの両方に入り、Aが和の1桁目、Bが桁上げを出します。まず、足し算の結果を確かめましょう。
受験者同じ入力から違う出力を作るのですね。1と1を足すところで迷います。
講師1+1は2進数で10です。和の1桁目は0、桁上げは1になります。
受験者では、0+0では両方0、0+1と1+0では和だけが1ですね。
講師そのとおりです。入力を00、01、10、11の順に並べると、和は0、1、1、0、桁上げは0、0、0、1です。
受験者和は入力が異なるときだけ1です。桁上げは両方が1のときだけ1になります。
講師前者は排他的論理和、後者は論理積です。したがって、Aが排他的論理和、Bが論理積の組合せが適切です。
受験者否定論理積と否定論理和の組合せは、0+0でどうなりますか。
講師どちらも入力が00なら1を出します。和も桁上げも1となり、足し算の結果に合いません。
受験者Aが否定論理和、Bが排他的論理和でも、00で和が1になり、11で桁上げが0になりますね。
講師はい。どちらも必要な出力と逆になります。
受験者Aが論理積、Bが論理和の場合も、1+0で和が0、桁上げが1になってしまいます。
講師その確認で見分けられます。半加算器の素子を選ぶときは、4通りの加算結果を並べ、和と桁上げを別々に照らし合わせます。
受験者和だけで判断せず、桁上げまで確かめればよいのですね。
講師はい。半加算器は下の桁からの桁上げを入力に取りません。それも加える場合は全加算器を使います。
まとめ
半加算器では、2つの入力が異なるときだけ和の1桁目が1になり、両方が1のときだけ桁上げが1になります。したがって、Aは排他的論理和、Bは論理積で、正解はアです。入力4通りの加算結果を並べ、両方の出力を各素子と照らし合わせると、ほかの組合せも判別できます。
解答・解説
正解はアです
この問題のテーマ
1桁の2進数を2つ加える半加算器で、和の1桁目を出す素子と桁上げを出す素子が、それぞれどの論理演算になるかを問う問題です。
解き方の考え方
図を見ると、xとyはそれぞれ分岐して素子Aと素子Bの両方に入り、Aの出力がz(和の1桁目)、Bの出力がc(桁上げ)になっています。そこで、4通りの入力について2進数の足し算を行い、zとcの真理値表を作ります。0+0=0、0+1=1、1+0=1、1+1=10(2進数)なので、(x,y)=(0,0),(0,1),(1,0),(1,1)に対してzは0,1,1,0、cは0,0,0,1です。zは2つの入力が異なるときだけ1なので排他的論理和、cは両方が1のときだけ1なので論理積に当たります。
選択肢ごとの解説
- ○ア A:排他的論理和,B:論理積Aを排他的論理和、Bを論理積とする組合せです。排他的論理和の出力は0,1,1,0でzの列と一致し、論理積の出力は0,0,0,1でcの列と一致します。4通りの入力すべてで加算結果どおりになるので、この組合せが半加算器になります。
- ×イ A:否定論理積,B:否定論理和Aを否定論理積、Bを否定論理和とする組合せです。入力が0と0のとき、否定論理積も否定論理和も1を出力するため、zとcがともに1になります。0+0の結果は和0・桁上げ0なので、どちらの素子も合いません。
- ×ウ A:否定論理和,B:排他的論理和Aを否定論理和、Bを排他的論理和とする組合せです。否定論理和は入力0と0で1を出すので、0+0の和が1になってしまいます。また、排他的論理和は入力1と1で0を出すので、1+1で必要な桁上げ1が出ません。
- ×エ A:論理積,B:論理和Aを論理積、Bを論理和とする組合せです。論理積は入力1と0で0を出すので、1+0の和1が得られません。論理和は片方だけが1のときにも1を出すので、桁上げが起きない1+0や0+1でもcが1になってしまいます。
補足
半加算器は下の桁からの桁上げを入力として受け取りません。下位からの桁上げも加えるには全加算器を使い、全加算器は半加算器2つと論理和を組み合わせて構成できます。
POINT
- 半加算器では、和の1桁目を排他的論理和で、桁上げを論理積で求めます。
- 排他的論理和は2つの入力が異なるときだけ1、論理積は両方が1のときだけ1を出力します。
- 素子を選ぶ問題では、4通りの入力について加算結果の真理値表を書き、各素子の出力と照らし合わせると確実に解けます。
- 否定論理積と否定論理和は入力0,0で1を出すので、0+0=0となる加算の出力には単独では使えません。
