第2種情報処理技術者試験 1997年度 = 平成9年度・秋期 午前 問16

 次は、あるビット列が与えられたとき、最も右にある1を残し、他のビットをすベて0にするアルゴリズムである。例えば、00101000が与えられたとき、00001000を求めるものである。手順3の処理はどれか。

 手順1  与えられたビット列Aを2進数とみなし、Aから1を引き、結果をBとする。
 手順2  AとBの排他的論理和(EOR)を求め、結果をCとする。
 手順3                  

 ア  AとCの排他的論理和(EOR)を求める。
 イ  AとCの否定論理積(NAND)を求める。
 ウ  AとCの論理積(AND)を求める。
 エ  AとCの論理和(OR)を求める。

解答

 ウ

解説

 与えられたビット列Aを2進数とみなし、Aから1を引き、結果をBとします。Aが00101000であれば、A,Bは次のようになります。
   A  00101000
   B  00100111
 すなわち、もっとも右にあった1が0となり、それより下位のビットが1となったものがBです(10進数で101000から1を引いたら100999になるのと同じ要領です)。
 AとBの排他的論理和を求めると、Cは次のようになります。
   C  00001111  ※AとBの片方のみが1であるビットが1、それ以外は0
 すなわち、Aのもっとも右にあった1を含めた位置から下位ビットのみが1となったものがCです。
 AとCの論理積(AND)を求めると、目的とするものが得られます。
   ■  00001000  ※AとCの両方とも1であるビットが1、それ以外は0


BohYoh.comトップページへ