次に示す手順は、列中の少なくとも一つは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を求めるので、ア〜エの演算を試してみます。
- ア(XOR)
A XOR C=00101000 XOR 00001111=00100111
- イ(NAND)
A NAND C=00101000 NAND 00001111=11110111
- ウ(AND)
A AND C=00101000 AND 00001111=00001000
- エ(OR)
A OR C=00101000 OR 00001111=00101111
【キーワード】
・排他的論理和
・否定論理積
【キーワードの解説】
- 排他的論理和(eXclusive OR、XOR)
2進数の演算で、2つの値が異なるとき1に、同じとき0になります。
0 XOR 0=0、0 XOR 1=1、1 XOR 0=1、1 XOR 1=0
- 否定論理積(Not AND、NAND)
論理積(AND)の否定です。論理積を求めその結果の0と1を入れ替えて求めます。
もっと、「論理演算」について調べてみよう。
戻る
一覧へ
次へ
|