数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍する操作はどれか。ここで,桁あふれは,起こらないものとする。
- xを2ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
- xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
- xを3ビット左にシフトした値と,xを2ビット左にシフトした値を加算する。
- xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
解答
ア
解説
2進数を1ビット左にシフトするとその数は2倍になります。それを踏まえ、各選択肢を計算すると次の通りです。
- xを2ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
(x × 2 × 2 + x) × 2 = 10x
となり10倍になります。 - xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
(x × 2 × 2 + x) × 2 × 2 = 20x
となり20倍になります。 - xを3ビット左にシフトした値と,xを2ビット左にシフトした値を加算する。
(x × 2 × 2 × 2) + (x × 2 × 2) = 12x
となり12倍になります。 - xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
(x × 2 × 2 × 2 + x) × 2 = 18x
となり18倍になります。
参考情報
分野・分類
分野 | テクノロジ系 |
大分類 | 基礎理論 |
中分類 | 基礎理論 |
小分類 | 離散数学 |
出題歴
- FE 平成29年度秋期 問1