午後問題の歩き方 | 午後問題の読み方~ハードウェア

筆者は、基本情報技術者試験の対策講座で講師をしています。

もしも、受講者から「ハードウェアの午後問題で1問だけ勉強するとしたら、どれがよいですか?」と質問されたら、平成25年度秋期 午後問1「論理演算と加算器」をお勧めするでしょう。

論理演算や加算器に関する問題は、事前に勉強しておけば、短時間に解けるからです。出題頻度も多く、他の問題に応用もできます。

この記事で、問題と解法を示しますので、実際にやってみましょう。

 

論理演算の種類と機能を、あらかじめ知っておこう

以下は、問題の冒頭部分です。

論理演算の種類と機能を一覧表で示していますが、これは、この場で初めて知るような代物ではありません。あらかじめ熟知しておくべきものです。

それでは、なぜこの一覧表があるのでしょう。おそらく、設問の前に示すものが、他になかったのでしょう。

論理演算は、真と偽の演算ですが、ここでは、真を1、偽を0で表しています。もしかすると、それだけを示したかったのかもしれません。

 

 

論理演算が苦手な人のために、論理演算の機能と種類を説明しておきましょう。

論理演算の基本は、ANDとORとNOTです。これらの機能は、英語の意味そのものであり、ANDは「かつ」、ORは「または」、NOTは「でない」です。

A AND Bは、Aが1かつBが1なら、1になります。

A OR Bは、Aが1またはBが1なら、1になります。

NOT Aは、Aの値が0なら1、Aの値が1なら0になります。

 

XORとNANDとNORは、ANDとORとNOTを組み合わせて実現できる演算なのですが、よく使われるものので、名前が付けられています。それぞれの名前の意味がわかれば、機能もわかります。

XOR(エックスオア)は、eXclusive ORの略で「排他的または」という意味です。A XOR Bは、Aが1またはBが1なら、1になりますが、AとBの両方が1のときは、0になります。つまり、AとBのどちらか一方だけが1のときに、演算結果が1になるのです。他方を排除しているので、排他的というわけです。

NAND(ナンド)は、NOT ANDの略です。A NAND Bは、A AND Bの演算結果をNOT演算します。つまり、A NAND B = NOT(A AND B)です。

NOR(ノア)は、NOT ORの略です。A NOR Bは、A OR Bの演算結果をNOT演算します。つまり、A NOR B = NOT(A OR B)です。

 

入力を想定して出力を求める解法では、かなりの時間がかかる

それでは、設問1を見てみましょう。NANDとNORの機能を実現しているのはどれか、という問題です。

 

 

この手の問題の解法は、大きく分けて2つあります。

1つ目の解法は、入力のXとYに0と1を想定して、出力のZを書き出すことです。以下のようになります。

この結果から、NANDの機能を実現しているのは、選択肢イであり、NORの機能を実現しているのは、選択肢アだとわかります。しかし、この解法では、かなりの時間がかかってしまいます。

X Y 選択肢アのZ 選択肢イのZ 選択肢ウのZ 選択肢エのZ
0 0 1 1 0 1
0 1 0 1 1 0
1 0 0 1 1 0
1 1 0 0 0 1

 

ド・モルガンの法則を知っていれば、短時間で解ける

2つ目の解法は、以下に示した「ド・モルガンの法則」を使って、式を変形することです。この解法なら、ほとんど時間がかかりません。

 

【法則1】 NOT(X AND Y)= NOT X OR NOT Y

【法則2】 NOT(X OR Y)= NOT X AND NOT Y

 

実は、この設問は、ド・モルガンの法則を知っていれば、式を変形するまでもなく、瞬時に解けてしまいます。設問が、ド・モルガンの法則そのものになっているからです。

法則1の左辺のNOT(X AND Y)は、X AND YのNOTなのですから、X NAND Yです。これが、右辺のNOT X OR NOT Yと等しいのです。NOT X OR NOT Yは、XとYそれぞれをNOTしてからORしているので、これは選択肢イです。したがって、選択肢イがNANDです。

法則2の左辺のNOT(X OR Y)は、X OR YのNOTなのですから、X NOR Yです。これが、右辺のNOT X AND NOT Yと等しいのです。NOT X AND NOT Yは、XとYそれぞれをNOTしてからANDしているので、これは選択肢アです。したがって、選択肢アがNORです。

 

ピンと来ないかもしれないので、ド・モルガンの法則の式に、図を対応付けて示しておきましょう。法則1はNANDで、法則2はNORです。

 

【法則1】 NOT(X AND Y)= NOT X OR NOT Y

 

【法則2】 NOT(X OR Y)= NOT X AND NOT Y

 

 

半加算器と全加算器の仕組みも、あらかじめ知っておくべきもの

設問2は半加算器に関するもので、設問3は全加算器に関するものです。これらも、この場で初めて知るような代物ではありません。あらかじめ熟知しておくべきものです。

コンピュータの内部では、論理演算を組み合わせて2進数の加算を実現しています。それを実現する装置を、加算器と呼びます。

 

たとえば、0101+0011という2進数の加算を行うとしましょう。

10進数の加算と同様に、最下位桁から上位桁に向かって、1桁ずつ順番に足して行きます。最下位桁だけは、その桁にある2つの数値を加算します。これを行うのが、半加算器です。

最下位桁より上の桁は、その桁にある2つの数値と、下位桁からの桁上がりの1つの数値を加算するので、全部で3つの数値を加算します。これを行うのが、全加算器です。

 

設問2では、XとYを加算し、その結果をCとZで示しています。Cは桁上がりで、Zは同じ桁の数値です。たとえば、1+1の結果は10ですが、10の1がCで、0がZです。

 

 

空欄は、XとYからZを得る論理演算を選ぶ問題です。

表2を見ると、Zは、XとYのどちらか一方だけが1のときに演算結果が1になっているので、これはXOR演算です。したがって、答えは、選択肢オです。

ただし、半加算器の桁上がりがAND演算で得られ、同じ桁の数値がXOR演算で得られることは、あらかじめ熟知しておくべきです。そうすれば、表2を見るまでもなく、瞬時に答えがわかります。

 

全加算器は、2つの半加算器とOR回路で構成される

設問3も、全加算器の仕組みを知っていれば、瞬時に答えがわかります。

全加算器は、3つの数値を加算します。

全加算器は、2つの半加算器とOR回路で構成されます。

1つ目の半加算器で2つの数値を加算し、その結果のZともう1つの数値を2つ目の半加算器で加算して、最終的なZを得ます。

2つの半加算器の桁上がりCのいずれかが1なら、最終的なCが1になるので、それをOR回路で検出します。

この仕組みを、あらかじめ熟知しておくべきなのです。設問3の答えは、選択肢エのORです。

 

 

いかがだったでしょう。

ド・モルガンの法則や、半加算器と全加算器の仕組みを知っていれば、設問1~設問3を瞬時に解けることがわかったでしょう。

実際の試験問題には、設問4もありますが、記事が長くなってしまうので省略します。設問4も、論理演算の種類と機能がわかっていれば、ちゃんと解けますので、どうぞご心配なく。

 

 

 

ハードウェアの問題は、早い話が2進数と論理演算の問題です。

これは、コンピュータの内部では、10進数による四則演算ではなく、2進数を使った論理演算が行われているからです。

2進数と論理演算を苦手にしている人が多いようですが、コンピュータの根本的な動作原理なので、ぜひマスターしてください。

ちゃんとマスターすれば、どの問題でも短時間に解けますよ。

 

それではまた、お会いしましょう!

 

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数