平成30年度 秋期 午前 問20
コンピュータ構成要素
アドレスの先頭
次の方式で画素にメモリを割り当てる 640 × 480 のグラフィック LCD モジュールがある。座標(x,y)で始点(5,4)から終点(9,8)まで直線を描画するとき,直線上の x = 7 の画素に割り当てられたメモリのアドレスの先頭は何番地か。
〔方式〕
・メモリは 0 番地から昇順に使用する。
・1 画素は 16 ビットとする。
・座標(0,0)から座標(639,479)まで連続して割り当てる。
・各画素は,x = 0 から x 軸の方向にメモリを割り当てていく。
・x = 639 の次は x = 0 とし,y を 1 増やす。
〔図〕メモリと画素の対応
メモリ(1 番地 = 8 ビット幅) 画素の並び(x は右へ・y は下へ)
┌──────┐ x → 0 1 2 3 … 639
│ 0 番地 │ ┐ y 0 ○○○○ …
│ 1 番地 │ ┘ ← 画素(0,0) 1 ○○○○ …
│ 2 番地 │ ┐ …
│ 3 番地 │ ┘ ← 画素(1,0) 4 ● ← 始点(5,4)
│ ⋮ │ 5 ●
│ z 番地 │ 6 ● ← ここが x = 7
└──────┘ 7 ●
←8 bit→ 8 ● ← 終点(9,8)- ア3847 番地
- イ7680 番地
- ウ7694 番地
- エ8978 番地
答えと解説を見る
✓ これが正解ウ7694 番地
解説
通し番号3,847に1画素2番地を掛けた7,694番地です。
直線上の特定の画素について、割り当てられたメモリの先頭アドレスを求める問いです。二段構えで解きます。まず座標を確定し、次に通し番号からアドレスに直します。始点と終点を見ると、横方向も縦方向も四だけ増えています。つまり傾きが一の直線で、横が一進むごとに縦も一進みます。始点から順に並べていくと、横が七のときの縦は六だと決まります。次に画素の通し番号を出します。一行は640画素で、縦は0行目から数えます。縦が六の行の先頭までに640に六を掛けた3,840画素があり、そこからさらに七つ進んだところですから、通し番号は3,847です。最後にアドレスへ直します。図から一つの番地は8ビット、設問から一画素は16ビットですから、一画素は二つの番地を使います。3,847に二を掛けて7,694番地です。小さいところで式を確かめます。左上の画素は通し番号が0なので0番地から始まり、その右隣は通し番号が1なので2番地から始まります。図に書かれた並びと一致しました。見分けの軸は、画素の個数と番地の数が一対一ではないことです。一画素が何ビットか、一番地が何ビットかを読み取ってから、掛ける数を決めます。この形の式は、一行の画素数に縦を掛けて横を足し、一画素あたりの番地数を掛ける、と一本にまとめられます。
ほかの選択肢はなぜ違うのか
- ア3847 番地:画素の通し番号3,847をそのままアドレスとして答えた形です。一画素は16ビット、一つの番地は8ビットなので、一画素あたり二つの番地を使います。二を掛ける段を飛ばすと、正しい値のちょうど半分になります。
- イ7680 番地:縦が六の行の先頭にあたるアドレスです。640に六を掛けた3,840を二倍すると7,680になりますが、その行の中で横に七つ進んだぶんの14番地が加えられていません。行の先頭で止まった形です。
- エ8978 番地:縦を七、横を九とした別の点(9,7)の値です。640に七を掛けて九を足すと4,489となり、二倍して8,978になります。設問が指しているのは横が七の画素で、その縦は六ですから、640に六を掛けて七を足すのが正しい形です。
出典:平成30年度 秋期 応用情報技術者試験 午前 問20(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)