修了試験 2024-06-09実施分 基本情報技術者試験 問1
数値を2進数で格納するレジスタがある。 このレジスタに正の整数xを設定した後,“レジスタの値を2ビット左にシフトして,xを加える”操作を行うと,レジスタの値はxの何倍になるか。 ここで,あふれ(オーバフロー)は,発生しないものとする。
正答3
解説
正解は3です。 2進数の左シフトと値の倍数の関係を問う問題です。 2進数では1ビット左にシフトするごとに値が2倍になります。 【計算】 2ビット左シフト後の値は、x×2×2=4xです。 これにxを加えると、4x+x=5xです。 したがって、レジスタの値はxの5倍になります。 【選択肢別解説】 1:× 3倍ではありません。 3倍になるのは1ビット左シフトしてxを加えた場合(2x+x)です。 2:× 4倍は2ビット左シフトしただけの値です。 その後にxを加えるので4倍より大きくなります。 3:○ 2ビット左シフトで4x、xを加えて5xとなるので5倍です。 4:× 6倍にはなりません。 6倍にするには、例えば2ビット左シフトの値に1ビット左シフトの値(2x)を加える必要があります。 【ポイント】 左シフトとの加算を組み合わせると、乗算命令を使わずに定数倍を計算できます。 nビット左シフトは2のn乗倍、nビット右シフトは2のn乗分の1(切捨て)と覚えておきましょう。まとめて解く
修了試験 2024-06-09実施分を通しで解く(60問)→