オリジナル模擬試験1 問3

数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを20倍する操作はどれか。ここで,シフトによるけたあふれは,起こらないものとする。

  • xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
  • xを3ビット左にシフトした値と,xを4ビット左にシフトした値を加算する。
  • xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
  • xを4ビット左にシフトした値からxを減算し,更に1ビット左にシフトする。
正解 問題へ
分野:テクノロジ系
中分類:基礎理論
小分類:離散数学
解説
ビットシフトを使用した乗算に関する問題です。

2進数のビット列は、左にnビットシフトすると 元の値と比べて2n倍,右にnビットシフトすると 1/(2n)倍になるという性質があります。これを頭に入れて各選択肢が何倍になるかを考えてみると、
  • (22+1)×22=(4+1)×4=5×4=20倍
  • 23+24=8+16=24倍
  • (23+1)×21=(8+1)×2=18倍
  • (24+1)×21=(16-1)×2=30倍
したがって正の整数xを20倍する操作は「xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする」になります。

Pagetop