基本情報技術者試験「算術シフト」の問題
2の補数表現の負の整数-48に対して、符号を保ちながら算術右シフトを2ビット行った結果を10進数で表すとどれか。
ア-24 となる
イ12 になる
ウ-192 に増加する
エ-12 である
正解
エ.-12 である
算術右シフトは最上位の符号ビットを保ったまま右へずらすため、2ビットで2^2=4による除算になる。-48÷4=-12となり正しい。
?選択肢ごとの解説
ア ×-24は右シフト1ビット(÷2)の結果であり、2ビット分シフトしていない誤りである。
イ ×12は符号を無視して絶対値だけ4で割った誤りで、算術シフトが符号を保つ点を考慮していない。
ウ ×-192は右ではなく左シフト(×4)してしまった誤りで、シフト方向を取り違えている。
エ ○算術右シフトは最上位の符号ビットを保ったまま右へずらすため、2ビットで2^2=4による除算になる。-48÷4=-12となり正しい。
✎くわしく
算術右シフトは符号ビットを複製しながら右へ詰めるため、負数でも2^nによる除算(切り下げ)になる。論理右シフトは空いた上位に0を詰めるため負数では符号が壊れる。符号付き除算には算術シフトを用いる点が核心である。
✓本番での押さえどころ
試験のコツ
『算術右n=÷2^n(符号保持)』『算術左n=×2^n』。負数では必ず算術シフトを使うと覚える。
覚え方
算術シフトは『符号を引きずって動く』。右は割り算、左は掛け算、と方向で覚える。
よくある誤り
算術シフトと論理シフトを混同し負数の符号を壊す、またはシフト量(ビット数)と除数2^nの対応を誤る。
基礎理論の他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0078