次に示す手順は、列中の少なくとも一つは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) |
答え ウ
【解説】
与えられたビット列A = 00101000として手順どおりに実行してみます。
手順1
B = A - 1 = 00101000 - 1 = 00100111
手順2
C = A XOR B = 00101000 XOR 00100111 = 00001111
手順3
AとCから00001000を求めるので、ア〜エの演算を試してみます。
【キーワード】
・排他的論理和
・否定論理積