基礎理論

基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問2

次に示す手順は,列中の少なくとも一つは 1 であるビット列が与えられたとき,最も右にある 1 を残し,他のビットを全て 0 にするアルゴリズムである。例えば,00101000 が与えられたとき,00001000 が求まる。a に入る論理演算はどれか。
手順 1 与えられたビット列 A を符号なしの 2 進数と見なし,A から 1 を引き,結果を B とする。 手順 2 A と B の排他的論理和(XOR)を求め,結果を C とする。 手順 3 A と C の [ a ] を求め,結果を A とする。
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問2(問題文は IPA の公開問題。解説は当サイト作成)

答えと解説を見る

正解:ウ

覚える知識

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

最右の1だけを残すには、A−1とのXORで下位マスクを作りAとANDを取る。

この問題で必要なこと

A−1でA最右の1以下が反転し、AとBのXORは最右の1以下が全て1のマスクCとなる。AとCのANDで最右の1のみが残る。

ひっかけ

OR/XORでは他のビットが残る、またはビットが反転してしまう点を混同させる。

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

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

同じ知識の過去問