数値を2進数で表すレジスタがある。
このレジスタに格納されている正の整数x を10倍にする操作はどれか。
ここで、桁あふれは起こらないものとする。
ア | x を2ビット左にシフトした値にx を加算し、更に1ビット左にシフトする。 |
イ | x を2ビット左にシフトした値にx を加算し、更に2ビット左にシフトする。 |
ウ | x を3ビット左にシフトした値と、x を2ビット左にシフトした値を加算する。 |
エ | x を3ビット左にシフトした値にx を加算し、更に1ビット左にシフトする。 |
答え ア
【解説】
シフト演算は左に1ビットシフトすると値を2倍することになり、2ビット左にシフトすると値を4倍にすることになる。
したがって、値を10倍にするには、x を2ビット左にシフトして4倍にした値にx を加算し5倍にし、更に1ビット左にシフトして10倍にします。
【キーワード】
・シフト
・あふれ