基本情報技術者試験 基本情報技術者試験 令和元年度 科目A 修了認定試験 午前 問2: 次に示す手順は、列中の少なくとも一つは 1 であるビット列が与えられたとき、最も右にある 1 を残し、他のビットを全て 0 にするアルゴリズムである。例えば、0

基本情報技術者試験 令和元年度 科目A 修了認定試験
Q 22 / 80
次に示す手順は、列中の少なくとも一つは 1 であるビット列が与えられたとき、最も右にある 1 を残し、他のビットを全て 0 にするアルゴリズムである。例えば、00101000 が与えられたとき、00001000 が求まる。a に入る論理演算はどれか。 - 手順1:与えられたビット列 A を符号なしの 2 進数と見なし、A から 1 を引き、結果を B とする。 - 手順2:A と B の(XOR)を求め、結果を C とする。 - 手順3:A と C の[ a ]を求め、結果を A とする。
この問の正解率:55.03%(1,083件)
この問題の本文・選択肢・正解・解説(展開)

問題本文

次に示す手順は、列中の少なくとも一つは 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)

正解

. 論理積(AND)

解説

ビット列 A から 1 を引いた B では、最も右の 1 ビット位置から下位の 0 ビット全てが反転する。A XOR B によりこの反転領域がマスクとして得られ、A AND C で最右の 1 のみを残せる。例: A=00101000, B=00100111, C=A XOR B=00001111, A AND C=00001000。

選択肢ごとの解説

  • .XOR を使うと A=01001000 などになり、最右 1 だけを残せない。
  • .NAND は元の A のビット情報を破壊するため、最右 1 を残す動作にならない。
  • .AND によりマスク C との共通ビットだけが残り、A の最右 1 だけが選択される=正解。
  • .OR では A の全ての 1 ビットがそのまま残り、他のビットも 0 にならない。

基本情報技術者試験 令和元年度 科目A 修了認定試験過去問一覧へ戻る・問2