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

問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ビット左にシフトする」になります。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop