マナビング基本情報技術者

半加算器の真理値表から素子の役割を見分ける

基本情報技術者試験 平成29年度春期 午前 問22 / ハードウェア › ハードウェア

過去問にチャレンジ

平成29年度春期 午前 問22

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

平成29年度春期 午前 問22の図
平成29年度春期 午前 問22の図
  1. ア

    A:排他的論理和,B:論理積

  2. イ

    A:否定論理積,B:否定論理和

  3. ウ

    A:否定論理和,B:排他的論理和

  4. エ

    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なので論理積に当たります。

選択肢ごとの解説

  1. ○ア  A:排他的論理和,B:論理積
    Aを排他的論理和、Bを論理積とする組合せです。排他的論理和の出力は0,1,1,0でzの列と一致し、論理積の出力は0,0,0,1でcの列と一致します。4通りの入力すべてで加算結果どおりになるので、この組合せが半加算器になります。
  2. ×イ  A:否定論理積,B:否定論理和
    Aを否定論理積、Bを否定論理和とする組合せです。入力が0と0のとき、否定論理積も否定論理和も1を出力するため、zとcがともに1になります。0+0の結果は和0・桁上げ0なので、どちらの素子も合いません。
  3. ×ウ  A:否定論理和,B:排他的論理和
    Aを否定論理和、Bを排他的論理和とする組合せです。否定論理和は入力0と0で1を出すので、0+0の和が1になってしまいます。また、排他的論理和は入力1と1で0を出すので、1+1で必要な桁上げ1が出ません。
  4. ×エ  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となる加算の出力には単独では使えません。

※出典:平成29年度春期 基本情報技術者試験 午前 問22(一部改変)