問1
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数 x を10倍にする操作はどれか。ここで、桁あふれは起こらないものとする。
ア x を2ビット左にシフトした値に x を加算し、更に1ビット左にシフトする。
イ x を2ビット左にシフトした値に x を加算し、更に2ビット左にシフトする。
ウ x を3ビット左にシフトした値と、 x を2ビット左にシフトした値を加算する。
エ x を3ビット左にシフトした値に x を加算し、更に1ビット左にシフトする。
正解
ア
解説
2進数を元の値から nビット左にシフトすると、2n倍になり、nビット右にシフトすると、 (1/2)n倍になる。
ア 正しい。
( x × 22 + x ) × 2 = 5x × 2 = 10x
で、10倍になる
イ ( x × 22 + x) × 22 = 5x × 4 = 20x
で、20倍になる。
ウ x × 23 + x × 22 = 8x × 4x = 12x
で、12倍になる。
エ ( x × 23 + x ) × 2 = 9x × 2 = 18x
で、18倍になる。