離散数学 (全52問中50問目)
No.50
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数 x を10倍する操作はどれか。ここで,シフトによるあふれ(オーバフロー)は,起こらないものとする。
出典:平成17年春期 問1
- [この問題の出題歴]
- 基本情報技術者 H20春期 問4
- 基本情報技術者 H29秋期 問1
分類
テクノロジ系 » 基礎理論 » 離散数学
正解
ア
解説
ビットシフトを使用した乗算に関する問題です。
2進数のビット列は、左にnビットシフトすると 元の値と比べて2n倍,右にnビットシフトすると 1/(2n)倍になるという性質があります。これを頭に入れて各選択肢が何倍になるかを考えてみると、
2進数のビット列は、左にnビットシフトすると 元の値と比べて2n倍,右にnビットシフトすると 1/(2n)倍になるという性質があります。これを頭に入れて各選択肢が何倍になるかを考えてみると、
- (22+1)×21=(4+1)×2=5×2=10倍
- (22+1)×22=(4+1)×4=20倍
- (23)+22=8+4=12倍
- (23+1)×21=(8+1)×2=18倍