メモリのアドレスの先頭の番地|科目A-1(応用情報技術者) 令和6年 春期午前試験 問22
出典:令和6年春期 午前 問22
分野:ハードウェア(中分類) / ハードウェア(小分類)
次の方式で画素にメモリを割り当てる640 × 480のグラフィックLCDモジュールがある。始点(5,4)から終点(9,8)まで直線を描画するとき,直線上のx = 7の画素に割り当てられたメモリのアドレスの先頭は何番地か。ここで,画素の座標は(x,y)で表すものとする。
〔方式〕

- メモリは0番地から昇順に使用する。
- 1画素は16ビットとする。
- 座標(0,0)から座標(639,479)までメモリを連続して割り当てる。
- 各画素は,x = 0からx軸の方向にメモリを割り当てていく。
- x = 639の次はx = 0とし,yを1増やす。

- ア:3847
- イ:7680
- ウ:7694
- エ:8978
TSUNAGARU-ADVICE
まず押さえたいこと
画素をメモリへ横方向に順番に配置する場合、座標(x、y)の画素が先頭から何番目にあるかを考えます。1行には640画素あるので、まずy行分の画素数を数え、そこにxを加えることで対象画素の位置を求められます。
迷ったときの判断軸
直線の始点と終点から、xが7のときのy座標を先に特定します。その後、画素位置を求めますが、今回は1画素が16ビット = 2バイトなので、画素番号をそのままメモリアドレスにしないことが重要です。画素の位置に1画素当たりのバイト数を掛けて、先頭アドレスへ変換しましょう。
科目Bにつなげるために
特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、この考え方を画像データのメモリ配置、座標からアドレスへの変換、バイト数の計算に結び付けましょう。フレームバッファや組込み機器の画面制御など、2次元データを1次元のメモリ空間で扱う問題にも応用できます。
まず、始点(5、4)から終点(9、8)までの直線上で、x = 7となる画素のy座標を求めます。
この直線は、xが1増えるごとにyも1増えるので、
(5、4) → (6、5) → (7、6) → (8、7) → (9、8)
となります。したがって、求める画素の座標は(7、6)です。
次に、座標(7、6)が先頭から何番目の画素かを求めます。1行には640画素あり、y = 6より前には6行あります。
640 × 6 + 7 = 3,847
したがって、座標(7、6)は、0から数えて3,847番目の画素です。
ここで、1画素は16ビットですが、メモリの1番地は図より8ビットです。そのため、1画素当たり使用するメモリは、
16 ÷ 8 = 2番地
となります。
よって、座標(7、6)の画素に割り当てられるメモリの先頭アドレスは、
3,847 × 2 = 7,694番地
となります。
したがって、ウが適切です。