修了試験 2011-06-26実施分 基本情報技術者試験 問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倍になるのは、1ビット左シフト(2x)にxを加えた場合です。 本問は2ビットシフトなので4xにxを足して5倍です。 2:× 4倍は2ビット左シフトしただけの値です。 その後にxを加える操作があるので、正しくは5倍です。 3:○ 2ビット左シフトで4xになり、xを加えて5xになるので5倍です。 4:× 6倍にするには、4x+2xのように2xを加える必要があります。 本問で加えるのはxなので5倍です。 【ポイント】 左シフトnビットは2のn乗倍、右シフトnビットは2のn乗分の1(論理シフトの場合)と覚えます。 シフトと加算を組み合わせると、乗算命令を使わずに定数倍を計算できます。まとめて解く
修了試験 2011-06-26実施分を通しで解く(80問)→