平成21年度 春期 午前 問1
離散数学
レジスタに関する問題
数値を 2 進数で格納するレジスタがある。このレジスタに正の整数 x を設定した後,“レジスタの値を 2 ビット左にシフトして,x を加える”操作を行うと,レジスタの値は x の何倍になるか。ここで,あふれ(オーバフロー)は,発生しないものとする。
- ア3
- イ4
- ウ5
- エ6
答えと解説を見る
✓ これが正解ウ5
解説
4 倍にしたうえで、もとの値をもう一度加えます。
レジスタに入れた値を左へ 1 ビットシフトすると、各桁の重みが 2 倍になるので、値そのものも 2 倍になります。左へ 2 ビットなら 2 を二回掛けたことになり、4 倍です。設問の操作はそこで終わりではなく、寄せたあとにもとの整数をもう一度加えるところまでが一続きになっています。見分けるときの軸は、桁を寄せる動きを掛け算に翻訳したうえで、最後の加算まで式に含めることです。もとの整数を x と置くと、前半で 4x になり、後半で x が加わるので、合わせて 5x です。x を 3 として試すと、2 進数の 11 が 1100 すなわち 10 進数の 12 になり、そこへ 3 を足して 15 、つまり 3 の 5 倍になります。掛け算をシフトと加算の組合せで作る考え方そのものです。
ほかの選択肢はなぜ違うのか
- ア3:3 倍を挙げる内容です。寄せた桁数の 2 をそのまま倍率と読み、2 倍にした値へもとの整数を足した場合に出てくる数で、桁を一つ寄せるごとに重みが 2 倍になるという数え方を取り違えています。
- イ4:4 倍を挙げる内容です。左へ寄せたところで手を止め、そのあとにもとの整数を加えるという後半の動きを落としています。設問は二つの動きを続けて行うと述べています。
- エ6:6 倍を挙げる内容です。4 倍にした値へもとの整数を二回足せば届きますが、設問が足すと述べているのは一回だけなので、この倍率には至りません。
出典:平成21年度 春期 基本情報技術者試験 午前 問1
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)