平成20年 春期 基本情報技術者 午前 問4

数値を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ビット左シフト)したものである。(ア)


キーワード
・レジスタ
・けたあふれ

キーワードの解説

戻る 一覧へ 次へ