基礎理論

基本情報技術者試験 科目A免除 修了試験 20140126 実施分 問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免除 修了試験 20140126 実施分 問1

答えと解説を見る

正解:ウ

覚える知識

最右ビット抽出アルゴリズム(AND)

A と (A XOR (A-1)) の論理積を取ると、A の最も右にある1だけが残る。

この問題で必要なこと

A-1 は最右の1とそれより右のビットを反転させ、A XOR B は最右の1以下が全て1になる。これと A の論理積を取ると最右の1だけが残る。

ひっかけ

XOR や OR を選ぶと最右の1以外のビットも残る・変わると混同する。NAND は結果が反転する。

この知識の出題:本試験系 2 回・免除試験 4 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「ビットマスクとXORを使ったビット操作」で学ぶ

同じ知識の過去問