離散数学 (全109問中48問目)
No.48
数値を2進数で格納するレジスタがある。このレジスタに正の整数xを設定した後,"レジスタの値を2ビット左にシフトして,xを加える"操作を行うと,レジスタの値はxの何倍になるか。ここで,あふれ(オーバーフロー)は,発生しないものとする。
出典:平成21年春期 問1
- 3
- 4
- 5
- 6
- [出題歴]
- 基本情報技術者 H15春期 問2
- 基本情報技術者 H18秋期 問2
- 基本情報技術者 H28春期 問1
分類
テクノロジ系 » 基礎理論 » 離散数学
正解
ウ
解説
下記の例のように、2進数のビット列をnビット左にシフトする操作は、元の数値を2n倍することと同じです(逆に右シフトの場合は1/2n倍です)。
- 2進数 11 を左に1ビットシフト → 2進数 110
数値(10進数、以下同じ)は、3 → 6 と 21倍=2倍 になる - 2進数 11 を左に2ビットシフト → 2進数 1100
数値は、3 → 12 と 22倍=4倍 になる - 2進数 11 を左に3ビットシフト → 2進数 11000
数値は、3 → 24 と 23倍=8倍 になる
- レジスタに格納された2進数(x)を2ビット左にシフト
- xを22倍、つまり4倍する
- xを加える
- xを4倍した数値にxを足す