次に示す手順は、列中の少なくとも一つは1であるビット列が与えられたとき、最も右にある1つを残し、ほかのビットをすべて0にするアルゴリズムである。
例えば、00101000が与えられたとき、00001000が求まる。aに入る論理演算はどれか。
手順1 与えられたビット列Aを符号なし2進数とみなし、Aからを引き、結果を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を求めるので、ア〜エの演算を試してみます。
【キーワード】
・排他的論理和
・否定論理積