平成29年 秋期 基本情報技術者 午前 問1

数値を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倍にします。


キーワード
・シフト
・あふれ

キーワードの解説
  • シフト(shift)
    「シフトする」「シフト演算」とも言います。
    シフトには右シフトと左シフトがあり、けたをずらす処理です。
  • あふれ(オーバフロー、over-flow)
    文字通り、制限があるところにそれ以上のものを入れたときに発生します。
    『けたあふれ』ということも多いです。

もっと、「シフト」について調べてみよう。

戻る 一覧へ 次へ