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

平成21年度 春期 午前 問1

離散数学

レジスタに関する問題

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

答えと解説を見る

✓ これが正解ウ5

解説

4 倍にしたうえで、もとの値をもう一度加えます。

レジスタに入れた値を左へ 1 ビットシフトすると、各桁の重みが 2 倍になるので、値そのものも 2 倍になります。左へ 2 ビットなら 2 を二回掛けたことになり、4 倍です。設問の操作はそこで終わりではなく、寄せたあとにもとの整数をもう一度加えるところまでが一続きになっています。見分けるときの軸は、桁を寄せる動きを掛け算に翻訳したうえで、最後の加算まで式に含めることです。もとの整数を x と置くと、前半で 4x になり、後半で x が加わるので、合わせて 5x です。x を 3 として試すと、2 進数の 11 が 1100 すなわち 10 進数の 12 になり、そこへ 3 を足して 15 、つまり 3 の 5 倍になります。掛け算をシフトと加算の組合せで作る考え方そのものです。

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

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

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