次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。

例えば, 00101000が与えられたとき,00001000が求まる。

aに入る論理演算はどれか。

  1. 与えられたビット列Aを符号なしの2進数と見なし,Aから1を引き,結果をBとする。
  2. AとBの排他的論理和(XOR)を求め,結果をCとする。
  3. AとCのaを求め,結果をAとする。

×不正解です

ビット列の中で最も右に位置する「1」を単独で残すためのアルゴリズムを用いて、適切な論理演算を特定します。

  • 手順1で与えられたビット列A(例: 00101000)を数値として1減算し、その結果をBとします(例: 00100111)
  • 手順2でAとBの間で排他的論理和(XOR)を行い、結果をCとします(例: 00001111)
  • 手順3でAとCの間に適用する、ビットが1の部分だけを残すため、論理積(AND)が最適です。

したがって、A(00101000)とC(00001111)のAND演算により、00001000が得られるのです。

回答数 1
正解率 100.00%