戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 秋期 午前(科目A)02


問題文

32ビットのレジスタに16進数ABCDが入っているとき、2ビットだけ右に論理シフトした値はどれか。

選択肢

2AF3(正解)
6AF3
AF34
EAF3

32ビットレジスタに16進数ABCDが入っているとき、2ビットだけ右に論理シフトした値はどれか。【午前2 解説】

要点まとめ

  • 結論→32ビットレジスタに16進数 0xABCD(上位は0と仮定)が入っている場合、論理右シフト2ビットの結果は 0x2AF3 になります。
  • 根拠→16進数を2進数に展開して右に2ビット移動し、空いた上位ビットは0で埋める(論理シフト)と 0b0010 1010 1111 0011 = 0x2AF3 となるためです。
  • 差がつくポイント→「ビット単位のシフト」と「16進桁(ニブル)単位の移動」を混同しないこと、論理/算術/回転の違いを正確に区別することが合格点を分けます。

正解の理由

正解:
論理右シフトは空いた上位ビットを必ず0で埋めます。レジスタが32ビットで「16進数ABCD」が入っているとは通常 0x0000ABCD を意味するため、これを右に2ビット論理シフトすると 0x00002AF3 となり、提示選択肢の下16ビット表記では 2AF3 が正解です。

よくある誤解

  • 「右に2ビットシフト=右に1桁(4ビット)シフト」と誤解し、結果を AF34 のように考えてしまう。ビットとニブル(4ビット)の単位を混同しないこと。
  • 算術右シフト(符号拡張)やローテート(回転)と混同し、上位ビットに1を埋めたり末尾ビットを先頭に回して 6AF3 や EAF3 とするミス。問題文の「論理シフト」を正しく理解する必要があります。

解法ステップ

  1. 与えられた16進数をフル32ビット表記で考える(通常は 0x0000ABCD)。
  2. 16進数を2進数に変換する:0xABCD = 1010 1011 1100 1101(二分ごとに区切る)。
  3. 右に2ビットシフト(論理)する:空いた上位2ビットに0を入れる → 0010 1010 1111 0011。
  4. 2進数を4ビット区切りで16進数に戻すと 0x2AF3。
  5. 選択肢と照合してア(2AF3)が一致することを確認する。

選択肢別の誤答解説

  • ア: 2AF3 — 正解。上記の通り論理右シフト2ビットの結果です。
  • イ: 6AF3 — 回転(rotate right)2ビットの結果に相当します。下位の2ビットを上位に回す操作を想定すると 0x6AF3 になります。
  • ウ: AF34 — 左シフト(左に2ビット)をした場合に下位16ビットだけを見たときに得られる値です(0xABCD << 2 = 0x2AF34 → 下位16ビット AF34)。
  • エ: EAF3 — 算術右シフト(符号付きの右シフト)で上位を1で埋めた場合に相当します。元の最上位ビットが1と見なされると、このような塩梅になりますが、問題は論理シフトを要求しています。

補足コラム

  • 論理シフト(logical shift):空いたビット位置を常に0で埋める。符号なし整数の除算に対応(右シフトは2のべき乗での除算、切り捨て)。
  • 算術シフト(arithmetic shift):符号ビットを保持するために上位を符号ビットで埋める。負の数を保持したままシフトする際に用いる。
  • ローテート(rotate):回転操作は演算でビットを捨てずに循環させる。暗号やビット操作で使われる。
  • 実装上、CPU命令や言語によって論理/算術/回転の動作が異なるため、問題文の用語を正確に読むことが重要です。
python を使った確認(参考)
x = 0xABCD            # 与えられた値(32ビット中の下位16ビット)
logical_rshift2 = (x >> 2) & 0xFFFFFFFF
hex(logical_rshift2)  # '0x2af3'

FAQ

Q1: 「32ビットレジスタに入っている」とあるが、先頭は0でいいのか?
A1: 通常は与えられた16進数のみがレジスタに格納されていると読み、上位は0(0x0000ABCD)と解釈します。問題文で符号拡張や上位ビットの指定がない限りそう扱います。
Q2: 論理右シフトと算術右シフトの見分け方は?
A2: 問題文に「論理(logical)」とあれば0で埋め、「算術(arithmetic)」や符号に関する指定があれば符号ビットで埋めます。英語表現で "logical shift" / "arithmetic shift" と明記されることが多いです。
Q3: 右に2ビットシフトは常に1/4になるのか?
A3: 符号なし整数では数学的に floor(x/4) に相当しますが、算術シフトや符号付き整数の解釈、オーバーフローの扱いに注意が必要です。

関連キーワード: 論理シフト、右シフト、ビット演算、16進数、回転(ローテート)、算術シフト、シフト演算
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について