次に示す手順は、列中の少なくとも一つは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を求めるので、ア〜エの演算を試してみます。
【キーワード】
・論理演算