ビット演算のアルゴリズム

正解は ウ (論理積)です。 例の A=00101000 で手順をたどります。1を引くと 最も右の1が0になり、その右側の0がすべて1 に変わります。A と B の排他的論理和をとると、その変化した部分(最も右の1から右)だけが1になります。 ビット列 説明 A 00101000 与えられたビット列 B=A−1 00100111 最も右の1から右が反転する C=A XOR B 00001111 最も右の1から右だけが1 A AND C 00001000 A の中で、最も右の1だけが残る C は「最も右の1の位置と、その右側」を1にしたマスクです。A との 論理積 をとれば、その範囲で A に含まれる1、つまり最も右の1だけが残ります。論理和や排他的論理和では左側のビットが残ってしまいます。

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

  1. 手順1

    与えられたビット列AAを符号なしの2進数と見なし,AAから1を引き,結果をBBとする。

  2. 手順2

    AAとBBの排他的論理和(XOR)を求め,結果をCCとする。

  3. 手順3

    AAとCCのaを求め,結果をAAとする。

出典平成30年度 秋期 基本情報技術者試験 午前 問2
ア
排他的論理和(XOR)
イ
否定論理積(NAND)
ウ
論理積(AND)
エ
論理和(OR)