応用情報技術者試験 令和6年度 春期 午前 問8
同一メモリ空間で、転送元の開始アドレス、転送先の開始アドレス、方向フラグ及び転送語数をパラメータとして指定することによって、データをブロック転送できる機能をもつ CPU がある。図のようにアドレス 1001 から 1004 のデータをアドレス 1003 から 1006 に転送するとき、指定するパラメータとして適切なものはどれか。ここで、転送は開始アドレスから 1 語ずつ行われ、方向フラグに 0 を指定するとアドレスの昇順に、1 を指定するとアドレスの降順に転送を行うものとする。

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】エ
転送元の1001~1004と転送先の1003~1006は、1003、1004の部分で重なっています。このような転送をアドレスの昇順で行うと、まだ転送元として読み出していない1003、1004のデータが先に上書きされます。そのため、高いアドレスから低いアドレスへ、降順に転送しなければなりません。最初に指定するのは転送元の末尾1004と転送先の末尾1006であり、方向フラグを1、転送語数を4とします。具体的な転送順は、1004→1006、1003→1005、1002→1004、1001→1003です。この順序なら、各データを読み出してからそのアドレスが上書きされるので、元の4語を壊さずに移動できます。
アは誤りです。1001→1003から昇順に転送すると、元の1003が最初に上書きされ、後続の転送で誤ったデータを読み出します。 イは誤りです。降順の指定に対して開始アドレスが先頭の1001と1003なので、次は1000→1002となり、目的の範囲から外れます。 ウは誤りです。開始アドレスは末尾で正しいものの、昇順なので、次は1005→1007となり、転送対象外へ進みます。
【ポイント】 同一メモリ内で転送元と転送先が重なる場合は、上書き前のデータを保護できる方向を選びます。 転送先が転送元より高い側に重なる場合は末尾から降順、低い側に重なる場合は先頭から昇順に転送します。
出典:令和6年度 春期 応用情報技術者試験 午前 問8
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる