次に示す手順は、列中の少なくとも一つは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)
解説を読む
正解:ウ
解説:
問題で与えらえた例の数値を元に手順通りに計算をして求めて行きます。
手順1
\begin{eqnarray}
A&=&00101000\\
B&=&00101000-1\\
&=&00100111\\
\end{eqnarray}
手順2
\begin{array}{rr}
& 00101000=A\\
XOR) & 00100111=B\\
\hline
& 00001111=C
\end{array}
手順3
\begin{array}{rr}
& 00101000=A\\
a) & 00001111=C\\
\hline
& 00001000=A
\end{array}
ア~エのそれぞれの選択肢にある論理演算をaに置き換えて計算します。
ア.
\begin{array}{rr}
& 00101000=A\\
XOR) & 00001111=C\\
\hline
& 00100111=A
\end{array}
イ.
\begin{array}{rr}
& 00101000=A\\
NAND) & 00001111=C\\
\hline
& 11110111=A
\end{array}
ウ.
\begin{array}{rr}
& 00101000=A\\
AND) & 00001111=C\\
\hline
& 00001000=A
\end{array}
エ.
\begin{array}{rr}
& 00101000=A\\
OR) & 00001111=C\\
\hline
& 00101111=A
\end{array}
上記のとおり手順3と答えが合致するウが正解です。
解説を閉じる
コメント