問題
数値を 2 進数で表すレジスタがある。このレジスタに格納されている正の整数 x を 10倍にする操作はどれか。ここで、桁あふれは起こらないものとする。
選択肢
- 1x を 2 ビット左にシフトした値に x を加算し、更に 1 ビット左にシフトする。
- 2x を 2 ビット左にシフトした値に x を加算し、更に 2 ビット左にシフトする。
- 3x を 3 ビット左にシフトした値に x を加算し、更に 2 ビット左にシフトした値を加算する。
- 4x を 3 ビット左にシフトした値に x を加算し、更に 1 ビット左にシフトする。
正解
1. x を 2 ビット左にシフトした値に x を加算し、更に 1 ビット左にシフトする。
詳しい解説を見る解説を閉じる
解説
2 進数を n ビット左シフトすると値は 2ⁿ 倍になる。x を 2 ビット左シフトすると 4x、これに x を足すと 5x、さらに 1 ビット左シフトすると 2 倍されて 10x になる。よって「ア」が正しい。10 = (4 + 1) × 2 という分解を、シフトと加算で実現している点がポイントである。(出典: 平成29年度 秋期 基本情報技術者試験 午前 問1)
一問一答
科目A 180問+科目B 60問