平成30年 秋期 基本情報技術者 午前 問2

次に示す手順は、列中の少なくとも一つは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


キーワード
・論理演算

キーワードの解説
  • 論理演算
    値として0(偽)と1(真)をもつ計算のことで、
     論理和は、0 ∨ 0=0、0 ∨ 1=1、1 ∨ 0=1、1 ∨ 1=1
     論理積は、0 ∧ 0=0、0 ∧ 1=0、1 ∧ 0=0、1 ∧ 1=1
     否定は、0=1、1=0
    である。

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

戻る 一覧へ 次へ