情報処理技術者試験の過去問題を解く

基本情報技術者試験の午前の過去問題を1日1問のペースで解いていきます。 一緒に勉強しましょう。

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

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


数値を2進数で表すレジスタがある。
このレジスタに格納されている正の整数 を10倍にする操作はどれか。
ここで、シフトによるけたあふれは、起こらないものとする。

  を左に2ビットシフトした値に を加算し、更に1ビット左シフトする。
  を左に2ビットシフトした値に を加算し、更に2ビット左シフトする。
  を左に3ビットシフトした値と、 を2ビット左シフトした値を加算する。
  を左に3ビットシフトした値に を加算し、更に1ビット左シフトする。

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

キーワードの解説

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

スポンサードリンク


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


ビット演算の問題です。
10進数では1ビット(1けた)左シフトは10倍(1→10)に、1ビット(1けた)右シフトは1/10(10→1)にする処理です。
同様に2進数のときは1ビット左シフトで2倍、2ビット左シフトで4倍、1ビット右シフトで1/2、2ビット右シフトで1/4になりますので、2進数で10倍をするときは、どのようなシフト演算を組み合わせればよいかになります。

ビット演算、シフト演算はどのコンピュータ(CPU)でも処理が速いので、性能が低いCPUを使ったシステム(組込み系)のソフトウェア開発では重宝します。
例えば、変数 が奇数かを判断するときに(C言語で)
 if(( % 2)==1)
と剰余演算を使って書く人がいると思いますが、
 if(( & 0x1)==1)
と論理積演算を使って書いたほうが処理は速くなります。

テーマ:情報処理技術者試験 - ジャンル:コンピュータ