基本情報技術者試験「論理シフト」の問題
符号なし整数13を論理左シフトで3ビットずらした結果を10進数で表すとどれか。ただしけたあふれは生じないものとする。
ア104 になる
イ39
ウ26 である
エ1664 まで増える
正解
ア.104 になる
論理左シフトは空いた下位に0を詰めて全体を上位へずらすため、nビットで2^n倍になる。3ビットなら8倍で13×8=104となり正しい。
?選択肢ごとの解説
ア ○論理左シフトは空いた下位に0を詰めて全体を上位へずらすため、nビットで2^n倍になる。3ビットなら8倍で13×8=104となり正しい。
イ ×39は13×3とシフト量をそのまま掛け数にした誤りで、2^3=8倍になることを取り違えている。
ウ ×26は左シフト1ビット(×2)の結果であり、3ビット分ずらしていない誤りである。
エ ×1664は13×128=13×2^7と、シフト量を7ビットなどに取り違えた過大な誤りである。
✎くわしく
論理左シフトは下位に0を補充して桁を上げるため2^n倍の乗算になる。右シフトなら2^nによる除算。けたあふれが起きると上位ビットが失われ値が壊れる点に注意する。シフトによる乗除算は加減算より高速である。
✓本番での押さえどころ
試験のコツ
『左シフトn=×2^n』を機械的に適用。n=3なら×8、n=4なら×16と2のべき乗で換算する。
覚え方
左シフトは『桁が上がって値が大きくなる』=掛け算、1ビットごとに2倍、と覚える。
よくある誤り
シフト量nを掛け数そのものとして×nしてしまう、または2^nの指数を取り違える誤りが多い。
基礎理論の他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0079