離散数学 (全109問中73問目)

No.73

数値を2進数で格納するレジスタがある。このレジスタに正の整数 x を設定した後,"レジスタの値を2ビット左にシフトして,x を加える"操作を行うと,レジスタの値は x の何倍になるか。ここで,シフトによるあふれ(オーバーフロー)は,発生しないものとする。
  • 3
  • 4
  • 5
  • 6
  • [出題歴]
  • 基本情報技術者 H15春期 問2
  • 基本情報技術者 H21春期 問1
  • 基本情報技術者 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つに分解して考えると、
レジスタに格納された2進数(x)を2ビット左にシフト
xを22倍、つまり4倍する
xを加える
xを4倍した数値にxを足す
という組合せなので、操作後のレジスタの値は元のxの値の5倍になります。したがって「ウ」が正解です。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop