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


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

キーワードの解説
  • レジスタ
    コンピュータのプロセッサ(CPU)が内部に持っている記憶装置で、最も高速なもの。
    高速であるため、実現するのにコストが高く、容量は非常に少ない。
    プロセッサでデータを処理する場合、他の記憶装置(主記憶)からレジスタに値を読み込んでから処理する。
  • けたあふれ
    コンピュータのプロセッサのレジスタには扱えるデータのサイズに制限があり、その制限を越えることを“けたあふれ”(オーバフロー、Overflow)という。
    けたあふれが発生すると、通常CPUはエラーを通知します。

もっと、「レジスタ」について調べてみよう。

戻る 一覧へ 次へ