「応用情報技術者試験/平成31年春季午前問9」転送方式

問題

出典:応用情報技術者平成31年春季午前問9

同一メモリ上で転送するとき、
・転送元の開始アドレス
・転送先の開始アドレス
・方向フラグ
・転送語数
をパラメタとして指定することでブロック転送ができるCPUがある。
図のように「アドレス1001から1004の内容」を「アドレス1003から1006」に転送する場合、
パラメタとして適切なものはどれか。

ここで、
転送は開始アドレスから1語ずつ行われ、
方向フラグに「0を指定するとアドレスを昇順に、1を指定するとアドレスの降順に」転送を行うものとする。

解説

ITの問題というかは、単純なパズル問題である。

図の通りに、同じ箱内でブロックを移動するには、どういう命令をすれば良いのか?という話なので、その辺を以下に述べる。

転送元の開始アドレス

ここだけ考えると2択である。
転送元は「1001か1004か」という問題である。

ここのポイントは「同じ箱内でブロックを移動する」という点である。
つまりは、ブロックを移動していく中で、次に移動するブロックの内容が失くなってしまったら困るのである。

転送元を1001にしたら、選択肢的に必然的に転送先は1003になる。
つまりは、1003の値が1001の値で上書きされてしまうのである。
これでは、図に書いてある内容を実現できない。

図の内容を細かく言語化するならば、
・1001の内容を1003に移動する。
・1002の内容を1004に移動する。
・1003の内容を1005に移動する。
・1004の内容を1006に移動する。
のである。

「・1003の内容を1005に移動する。」という目的を達成できなくなるので、選択肢の1001は却下。

よって、転送元の開始アドレスは消去法的に1004になる。

転送先の開始アドレス

「転送元の開始アドレス」が先程決定されたので、「転送先の開始アドレス」の選択肢は一つしかない。
1006になる。

方向フラグ

問題文には、転送は開始アドレスから1語ずつ行われ、方向フラグに「0を指定するとアドレスを昇順に、1を指定するとアドレスの降順に」転送を行うものとする。とある。

遠回しな説明なので分かりやすく説明すると、アドレスを昇順に移動するとは「開始アドレスを一番小さい値として考え、値を増加させて移動する」という事である。

転送元の開始アドレスが1004ならば、それを一番小さい値と考え、次の転送する値は1005となる。降順はその逆である。

問題文の図を見ると、1005はブロック移動の対象になっていない。なっているのは1003であるから、方向フラグは1が正しい。

これで選択肢が完全に絞られたので、正解は「エ」になる。

転送語数

選択肢の内容は全部同じなので、考える必要はない。
移動したいブロック数は4つなので、4が正しい。

解答

正解:エ

アドセンス
改行

テックキャンプ