本文へ移動

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

2011年度 秋期 午前の問題・解答解説

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

2011年度 秋期 午前の概要
30:00

問題番号から選ぶ

ビットマスクと論理シフトによる桁の抽出

テクノロジ系 · 論理演算 / ビットシフト / 基数変換

16ビットの2進数 n を16進数の各桁に分け、下位の桁から順にスタックへ格納したい。次の手順を4回繰り返すとき、a と b に入る適切な語句の組合せはどれか。ここで、XXXX16 は16進数 XXXX を表す。 〔手順〕 (1) [ a ] を x に代入する。 (2) x をスタックにプッシュする。 (3) n を [ b ] 論理シフトする。

解答・解説を表示

解答

イ

解説

まず要点:16進数の1桁は2進数の4ビット分にあたります。値を取り出すには、取り出したいビットだけを1にしたマスク(覆い)とAND演算(両方が1のときだけ1になる計算)を行います。次の桁へ進むときは、右へ4ビットずらします。

解き方

  1. 16進数の1桁分にあたる下の4ビットだけを取り出すため、マスク値000F16(2進数で0000 0000 0000 1111)を用意し、n AND 000F16を計算して変数xに入れます。
  2. 取り出した桁をスタックに入れたあと、次の桁を下の4ビットへ動かすため、n全体を右に4ビット論理シフトします。
選択肢 ア不正解
左に4ビットずらすと、下の桁ではなく上の桁へ動いてしまい、正しく桁を取り出せません。
選択肢 イ正解
000F16とANDすることでいちばん下の桁を取り出し、右に4ビットずらせば次の桁を順に処理できます。
選択肢 ウ不正解
FFF016とANDすると、いちばん下の4ビットが消えて上の3桁が残るため、下の桁を取り出せません。
選択肢 エ不正解
aのマスクがFFF016では、いちばん下の桁を取り出せず、上の12ビットが出てしまいます。

答えの内訳

空欄a:n AND 000F16
16進数の最下位1桁(4ビット分)を取り出すには、下位4ビットが1で上位12ビットが0である000F16と論理積(AND)をとります。
空欄b:右に4ビット
処理済みの最下位4ビットを捨てて次の桁を下位に移動させるため、右へ4ビット論理シフトします。

覚えるポイント

  • 16進数の1桁=2進数の4ビット
  • ビット抽出はAND演算、不要な下位桁の廃棄は右シフト

間違えやすいところ

  • 左シフトと右シフトの向きを逆にしてしまう。
  • ビットを隠すマスクでANDとORを混同してしまう。

出題の前提:平成23年度秋期 基本情報技術者試験 午前 問1

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

2011年度 秋期 午前

参照した公式資料

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