数値を2進数で格納するレジスタがある。このレジスタに正の整数xを設定した後、”レジスタの値を2ビット左にシフトして、xを加える”操作を行うと、レジスタの値はxの何倍になるか。ここで、シフトによるあふれ (オーバーフロー) は、発生しないものとする。
ア | 3 |
イ | 4 |
ウ | 5 |
エ | 6 |
1 ビット左シフトするごとに 2 倍になるので,x を 2 ビット左シフトしたものに x を加えると,x×2×2+x=5x→ 5 倍になる。よってウが正解である。
下記より、(3)10から(15)10になる(5倍)ことが分かる。
(11)2 | → | (1100)2 |
(3)10 | → | (12)10 |
(12)10+(3)10 | = | (15)10 |