基礎理論
基本情報技術者試験 科目A免除 修了試験 20170723 実施分 問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免除 修了試験 20170723 実施分 問2
答えと解説を見る
正解:ウ
覚える知識
最右ビット抽出アルゴリズム(AND)
A XOR (A-1)は最右の1とそれより下位が全て1になり、これとAのANDで最右の1だけが残る。
この問題で必要なこと
A-1とAのXORを取ると最右の1以下が全て1のマスクになる。AとそのマスクのANDでは最右の1を取り出せない。実際にはAとCのANDで最右の1が残る(例で確認可能)。
ひっかけ
XORやORを選ぶと下位ビットが残る、NANDは全体が反転する。
この知識の出題:本試験系 2 回・免除試験 4 回(公開問題での観測値)