本文へ移動

基本情報技術者試験 · 学習ガイド

2015年度 春期 午前の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2015年度 春期 午前の概要
30:00

問題番号から選ぶ

最下位の1ビットを取り出すビット演算

テクノロジ系 · ビット演算 / 排他的論理和 / 論理積

次に示す手順は、列中に少なくとも1つは1を含むビット列Aが与えられたとき、最も右側にある1を残して他のビットをすべて0にするアルゴリズムである。空欄 a に入る適切な論理演算はどれか。 〔手順〕 手順1:与えられたビット列Aを符号なし2進数とみなし、Aから1を減算した結果をBとする。 手順2:AとBの排他的論理和(XOR)を求め、結果をCとする。 手順3:AとCの [ a ] を求め、結果をAとする。

解答・解説を表示

解答

ウ

解説

まず要点:Aから1を引いた値BとAの排他的論理和(XOR、どちらか片方だけが1なら1になる演算)をとり、その結果CとAの論理積(AND、両方が1のときだけ1になる演算)をとると、いちばん右側にある1だけが残ります。2進数から1を引くと、いちばん右の1が0に変わり、その下にある0はすべて1に反転します。この性質を使うと、右端の1だけを取り出せるのです。

解き方

  1. 具体例としてA = 00101000を使い、手順1で1を引くとB = 00100111になります。
  2. 手順2でAとBのXORを計算すると、変化した下位4ビットが1になり、C = 00001111が得られます。
  3. 手順3でいちばん右の1(00001000)だけを残すには、A(00101000)とC(00001111)の論理積(AND)をとります。
選択肢 ア不正解
AとCの排他的論理和をとると、いちばん右の1が0になって消えてしまうので誤りです。
選択肢 イ不正解
AとCの否定論理積をとると、残したい1の部分まで0になり、他のビットが多く1になってしまうので誤りです。
選択肢 ウ正解
AとCの論理積をとると、Cで1になっている範囲のうちAも1の場所だけが残り、いちばん右の1を取り出せます。
選択肢 エ不正解
AとCの論理和をとると、いちばん右の1より下のビットまで1になってしまうので誤りです。

覚えるポイント

  • ビット列から1を引くと最下位の1が0になり下位がすべて1になる
  • 最下位ビットの抽出(A AND -A)の仕組みと類似するアルゴリズム

間違えやすいところ

  • 手順2でできたビット列Cが下位すべて1になる形を見落とし、反転の処理と混同してしまうこと

出題の前提:平成27年度春期基本情報技術者試験午前問1の出題条件による。

出典:IPA『2015年度 春期 午前』
公式問題冊子 p.4 ↗(www.ipa.go.jp)

2015年度 春期 午前

参照した公式資料

IPAが公開した2015年度 春期 午前の問題・解答資料です。