平成27年度 春期 基本情報技術者試験 午前 問1
テクノロジ/アルゴリズム次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。例えば,00101000が与えられたとき,00001000が求まる。aに入る論理演算はどれか。 手順1 与えられたビット列Aを符号なしの2進数と見なし,Aから1を引き,結果をBとする。 手順2 AとBの排他的論理和(XOR)を求め,結果をCとする。 手順3 AとCの a を求め,結果をAとする。
出典:平成27年度 春期 基本情報技術者試験 午前 問1
- ア排他的論理和(XOR)
- イ否定論理積(NAND)
- ウ論理積(AND)
- エ論理和(OR)
正解:ウ
解説
与えられたビット列Aの中で最も右(下位)にある1だけを残す標準的なビット操作です。A−1(B)は,Aの最下位の1を0に,それより下位の0を全て1に反転させます。AとBのXOR(C)を取ると,最下位の1からその上位側のビットまでが1になった列が得られ,さらにAとCの論理積(AND)を取ることで,元々Aで1だった最下位ビットだけが残り,他は全て0になります。
選択肢ごとの解説
- ア誤り。XORでは元のAのビットパターンとの共通部分が打ち消し合ってしまい,最下位の1だけを残すことはできません。
- イ誤り。NANDでは多くのビットが1のままになってしまい,最下位の1だけを残す結果にはなりません。
- ウ正しい。AとCの論理積(AND)を取ると,Aで元々1だった最下位ビットだけが1として残り,他のビットは0になります。
- エ誤り。論理和(OR)では0だったビットも1になってしまう箇所があり,最下位の1だけを残すことはできません。