応用情報技術者試験過去問を解いてみた R6年度 春期 問22

はじめに

今回も、応用情報技術者試験の過去問を解いていきます。

今回の問題は グラフィックLCDのメモリ配置(フレームバッファ) に関する問題です。
画面の座標とメモリアドレスの関係を理解しているかがポイントになります。

組込み機器や画像処理では、画素とメモリの対応関係は非常に重要な知識です。


問題

次の方式で画素にメモリを割り当てる 640×480のグラフィックLCDモジュール がある。

始点 (5,4) から終点 (9,8) まで直線を描画するとき、
直線上の x=7 の画素 に割り当てられたメモリのアドレスの先頭は何番地か。

引用:独立行政法人 情報処理推進機構

条件

  • メモリは 0番地から昇順に使用
  • 1画素 = 16ビット
  • 座標 (0,0) 〜 (639,479) まで連続割当
  • x方向にメモリを割当
  • x=639 の次は x=0 で y+1

つまり、次の順序でメモリが並ぶ。

(0,0) (1,0) (2,0) ... (639,0)
(0,1) (1,1) (2,1) ... (639,1)
(0,2) ...

解答

ウ:7694


解説

① 直線上の座標を求める

始点
(5,4)

終点
(9,8)

差分を求めます。

項目
Δx9 − 5 = 4
Δy8 − 4 = 4

つまり

傾き = 1

よって直線は

y = x − 1

になります。


② x=7 のときの y を求める

y = 7 − 1
y = 6

したがって対象の画素は

(7,6)

です。


③ メモリアドレスを求める

メモリは 横方向(x方向)に並ぶため

アドレス計算は次の式になります。

アドレス = y × 640 + x

計算します。

= 6 × 640 + 7
= 3840 + 7
= 3847

これは 画素番号です。


④ 1画素は2つの番地を使って表す

図よりメモリの各番地のサイズ 8ビットとなっています。

また、条件より 1 画素は 16ビットです。

つまり、 1 つの画素を 2 つの番地を使って表すことになります。

したがって

アドレス = 3847 × 2
= 7694

結果

座標画素番号番地
(7,6)38477694

したがって

7694番地

になります。


図解(メモリ配置)

メモリは次の順序で割り当てられます。

y=0
(0,0) → 0
(1,0) → 1
(2,0) → 2
...
(639,0)

y=1
(0,1)
(1,1)
(2,1)

つまり

アドレス = y × 横幅 + x

となります。


画素とメモリの対応

座標画素番号番地
(0,0)00,1
(1,0)12,3
(2,0)24,5

(639,0)6391278、1279
(0,1)6401280、1281
(1,1)6411282、1283

体系的位置づけ

この問題は次の分野に属します。

コンピュータシステム
└ ハードウェア
└ 入出力装置
└ グラフィック表示
└ フレームバッファ

参考情報

コメント

タイトルとURLをコピーしました