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

平成27年度 春期 午前 問1

離散数学

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

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

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

原典の手順3 の a は罫線で囲んだ空欄です。本ファイルでは [ a ] と書きました。

答えと解説を見る

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

解説

A と C の共通部分を取ると最も右の1だけが残ります。

手順1 で A から 1 を引くと、最も右にある 1 より下の桁が全て 1 に変わり、その 1 自身は 0 になります。それより上の桁は変わりません。手順2 で A と B の排他的論理和を取ると、変化した桁だけが 1 として並ぶので、C は最も右の 1 とそこから下の桁が全て 1 のビット列になります。判定の軸は、この C と元の A を重ねたときに何が残るかという一点です。両方に 1 が立っている桁だけを残す論理積を使えば、C で 1 になっている範囲のうち A でも 1 だった桁、つまり最も右にある 1 だけが残り、他の桁は 0 になります。設問の例で確かめると、A が 00101000、B が 00100111、C が 00001111 で、両方に 1 が立つ桁は右から 4 番目だけなので 00001000 が得られます。

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

この問題の用語

出典:平成27年度 春期 基本情報技術者試験 午前 問1

同じ用語が出る問題

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