平成27年 春期 基本情報技術者 午前 問1

次に示す手順は、列中の少なくとも一つは1であるビット列が与えられたとき、最も右にある1を残し、ほかのビットをすべて0にするアルゴリズムである。
例えば、00101000が与えられたとき、00001000が求まる。aに入る論理演算はどれか。

 手順1  与えられたビット列Aを符号なしの2進数と見なし、Aから1を引き、結果をBとする。
 手順2  AとBの排他的論理和(XOR)を求め、結果をCとする。
 手順3  AとCの  a  を求め、結果をAとする。

 ア  排他的論理和(XOR)  イ  否定論理積(NAND)
 ウ  論理積(AND)  エ  論理和(OR)


答え ウ


解説
与えられたビット列A = 00101000として手順どおりに実行してみます。
手順1
 B = A - 1 = 00101000 - 1 = 00100111
手順2
 C = A XOR B = 00101000 XOR 00100111 = 00001111
手順3
 AとCから00001000を求めるので、ア〜エの演算を試してみます。

  • ア(XOR)
    A XOR C = 00101000 XOR 00001111 = 00100111
  • イ(NAND)
    A NAND C = 00101000 NAND 00001111 = 11110111
  • ウ(AND)
    A AND C = 00101000 AND 00001111 = 00001000
  • エ(OR)
    A OR C = 00101000 OR 00001111 = 00101111


キーワード
・排他的論理和
・否定論理積

キーワードの解説
  • 排他的論理和(eXclusive OR、XOR)
    2進数の演算で、2つの値が異なるとき1に、同じとき0になります。
    0 XOR 0=0、0 XOR 1=1、1 XOR 0=1、1 XOR 1=0
  • 否定論理積(Not AND、NAND)
    論理積(AND)の否定です。論理積を求めその結果の0と1を入れ替えて求めます。

もっと、「論理演算」について調べてみよう。

戻る 一覧へ 次へ