過去問解きまくり研究所 ホーム

平成28年度 春期 午前 問1

離散数学

シフト演算に関する問題

数値を 2 進数で格納するレジスタがある。このレジスタに正の整数 x を設定した後,"レジスタの値を 2 ビット左にシフトして,x を加える"操作を行うと,レジスタの値は x の何倍になるか。ここで,あふれ(オーバフロー)は,発生しないものとする。

答えと解説を見る

✓ これが正解ウ5

解説

2ビット左シフトは4倍。それに元を足すので5倍です。

2進数で1ビット左にシフトすると値は2倍になり、2ビット左にシフトすれば2の2乗で4倍になります。この操作の結果に、シフト前の元の値をもう一度加えるので、加える分を含めると4倍と1倍の合計になります。したがって最終の値は元の5倍です。判定の軸は、左シフトを繰り返した何倍かに、加える回数ぶんを足すことだけです。あふれが発生しないという条件がここで効いていて、途中で桁が失われることが無いため、単純な倍率の合計として答えを決めることができます。ここで扱っているのは、2進数の重み付けが桁ごとに2倍で並ぶ位取り記数法の性質と、そこから導かれるシフト演算の意味です。

ほかの選択肢はなぜ違うのか

出典:平成28年度 春期 基本情報技術者試験 午前 問1

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)