数値を2進数で表すレジスタがある。
このレジスタに格納されている正の整数x を10倍にする操作はどれか。
ここで、シフトによるけたあふれは、起こらないものとする。
ア | x を左に2ビットシフトした値にx を加算し、更に1ビット左シフトする。 |
イ | x を左に2ビットシフトした値にx を加算し、更に2ビット左シフトする。 |
ウ | x を左に3ビットシフトした値と、x を2ビット左シフトした値を加算する。 |
エ | x を左に3ビットシフトした値にx を加算し、更に1ビット左シフトする。 |
答え ア
【解説】
10進数の“10”を2進数で表すと“1010”になる。
すなわち、2進数で10倍するというのは、元の数x を8倍(3ビット左シフト)したものとx を2倍(1ビット左シフト)したものを加算すればよい。
すなわち、
10x =8x +2x
である。ただ、この処理方法は選択肢にないので、この式を変形すると
10x =2(4x +x )
になる。
これは、x を4倍(2ビット左シフト)したものにx を加算し、更に2倍(1ビット左シフト)したものである。(ア)
【キーワード】
・レジスタ
・けたあふれ