問題プレビューID: be47eadf

問 1

次に示す手順は、列中の少なくとも一つは 1 であるビット列が与えられたとき、最も右にある 1 を残し、他のビットを全て 0 にするアルゴリズムである。例えば、00101000 が与えられたとき、00001000 が求まる。a に入る論理演算はどれか。

手順 1 与えられたビット列 AA を符号なしの 2 進数と見なし、AA から 1 を引き、結果を BB とする。 手順 2 AA と BB の排他的論理和 (XOR) を求め、結果を CC とする。 手順 3 AA と CC の   a   を求め、結果を AA とする。

解説

具体例を用いて手順を追います。 与えられたビット列 A=00101000A = 00101000 とします(最も右の 1 は 4 ビット目)。

  1. 手順 1: AA から 1 を引きます。 B=00101000−00000001=00100111B = 00101000 - 00000001 = 00100111
  2. 手順 2: AA と BB の XOR を求めます。 A:00101000A: 00101000 B:00100111B: 00100111 C:00001111C: 00001111 (ビットが異なる部分が 1 になります)
  3. 手順 3: AA と CC の「論理積 (AND)」を求めます。 A:00101000A: 00101000 C:00001111C: 00001111 結果: 0000100000001000

このように、最も右にあった 1 だけが残り、他は 0 となります。したがって、a に入るのは「論理積 (AND)」です。

正解は「ウ」です。