平成23年度 特別 午前 問2
基礎理論
aに入るビット列
次の論理演算が成立するときに,a に入るビット列はどれか。ここで,⊕は排他的論理和を表す。
1101⊕0001⊕[ a ]⊕1101=1111
- ア1011
- イ1100
- ウ1101
- エ1110
答えと解説を見る
✓ これが正解エ1110
解説
両端の1101が打ち消し合い、1111と0001の演算で1110です。
排他的論理和には、使うと計算がぐっと短くなる性質が三つあります。同じ値どうしを演算すると、けたがすべてそろって消えてゼロになること。ゼロと演算しても値が変わらないこと。そして、並べる順番や括り方を自由に変えてよいことです。この三つを先に思い出してから式を眺めると、四つの候補を一つずつ当てはめる必要がなくなります。左辺には1101が二つ、離れた位置に置かれています。順番を入れ替えてよいのですから、この二つを隣に寄せて先に演算します。すると、その部分はゼロになって消えます。残るのは0001と空欄のビット列だけです。つまり左辺は、0001と空欄のビット列を演算した結果に縮みます。これが右辺の1111に等しいわけです。あとは空欄を求めるだけですが、ここでも同じ性質が効きます。両辺に0001をもう一度演算すると、左辺の0001は消えて空欄だけが残ります。右辺は1111と0001の演算になり、けたごとに見ると上の三けたは1と0で1が立ち、いちばん下のけたは1と1で消えますから、1110です。引き算にあたる操作がなく、同じものをもう一度演算すれば元に戻せる、というのがこの論理演算の使いどころです。念のため、求めた値を左から順に入れて計算し直すと、1101と0001で1100、それと1110で0010、さらに1101で1111となり、右辺に戻ります。
ほかの選択肢はなぜ違うのか
- ア1011:1011を空欄に入れると、縮めた後の式は0001との演算になり、けたごとに見て1010が出ます。右辺の1111とは、左から二けた目といちばん下のけたの二か所が食い違うので成り立ちません。
- イ1100:1100を空欄に入れると、0001との演算で1101になります。右辺の1111と比べると、下から二けた目だけが 0 でずれる形になり、あと一けた足りていません。
- ウ1101:左辺に見えている値と同じ1101を入れれば消えてくれる、と早合点した形です。実際に入れると左辺は1100にしかならず、消えるのはもともと対になっている二つだけです。
出典:平成23年度 特別 応用情報技術者試験 午前 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)