平成18年 秋期 基本情報技術者 午前 問8

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

 手順1 与えられたビット列Aを符号なし2進数とみなし、Aからを引き、結果を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を入れ替えて求めます。

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

戻る 一覧へ 次へ