過去問解きまくり研究所 ホーム

平成30年度 秋期 午前 問2

離散数学

排他的論理和に関する問題

次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。例えば,00101000 が与えられたとき,00001000 が求まる。aに入る論理演算はどれか。

手順1  与えられたビット列 A を符号なしの2進数と見なし,A から1を引き,結果を B とする。
手順2  A と B の排他的論理和(XOR)を求め,結果を C とする。
手順3  A と C の  a  を求め,結果を A とする。
答えと解説を見る

✓ これが正解ウ論理積(AND)

解説

1を引いた値と重ね合わせると、右端にある1だけが残ります。

符号なしの2進数から1を引くと、右端にある1は0に変わり、その右側にあった0はすべて1に変わります。元の値とこの値で排他的論理和を取ると、変化した範囲だけが1として浮かび上がります。00101000 なら、1を引いて 00100111 になり、排他的論理和は 00001111 です。浮かび上がった範囲は、右端の1とその右側をあわせた並びになっています。ここで元の値と論理積を取ると、両方が1である位置だけが残ります。右側は元の値が0なので消え、右端の1だけが生き残って 00001000 が得られます。どちらか一方にしか1が無い位置を落とす働きが、ここでは効いています。引き算で起きる繰り下がりの範囲が、そのまま取り出したい位置を指し示しているわけです。集合をビットで表す処理でよく使われる形です。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成30年度 秋期 基本情報技術者試験 午前 問2

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)