正答1
解説
正解は1です。
2進数のレジスタでは、1ビット左にシフトすると値は2倍になります。
2ビット左シフトで4倍、3ビット左シフトで8倍です。
10倍は「(4倍+1倍)×2」と分解できるので、シフトと加算の組合せで実現できます。
【計算】
選択肢1:(4x+x)×2=5x×2=10x
選択肢2:(4x+x)×4=5x×4=20x
選択肢3:8x+4x=12x
選択肢4:(8x+x)×2=9x×2=18x
【選択肢別解説】
1:○ 2ビット左シフトで4xとなり、xを加えて5xになります。
さらに1ビット左シフトして2倍にするので10xになります。
2:× 最後のシフトが2ビットなので5xが4倍され、20xになります。
10倍にするには最後のシフトは1ビットでなければなりません。
3:× 8xと4xの和は12xであり、10xにはなりません。
4:× 8xにxを加えた9xを2倍するので18xになります。
【ポイント】
nビットの左シフトは2のn乗倍、右シフトは2のn乗分の1に相当します。
掛ける数を2のべき乗の和に分解すると、シフトと加算の組合せがすぐに分かります。