第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