IPA過去問ドリル

平成27年度 春期 基本情報技術者試験 午前 問1

テクノロジ/アルゴリズム

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

出典:平成27年度 春期 基本情報技術者試験 午前 問1

正解:ウ

解説

与えられたビット列Aの中で最も右(下位)にある1だけを残す標準的なビット操作です。A−1(B)は,Aの最下位の1を0に,それより下位の0を全て1に反転させます。AとBのXOR(C)を取ると,最下位の1からその上位側のビットまでが1になった列が得られ,さらにAとCの論理積(AND)を取ることで,元々Aで1だった最下位ビットだけが残り,他は全て0になります。

選択肢ごとの解説

  • 誤り。XORでは元のAのビットパターンとの共通部分が打ち消し合ってしまい,最下位の1だけを残すことはできません。
  • 誤り。NANDでは多くのビットが1のままになってしまい,最下位の1だけを残す結果にはなりません。
  • 正しい。AとCの論理積(AND)を取ると,Aで元々1だった最下位ビットだけが1として残り,他のビットは0になります。
  • 誤り。論理和(OR)では0だったビットも1になってしまう箇所があり,最下位の1だけを残すことはできません。
基本情報技術者の過去問を演習モードで解く