応用情報技術者 2022年 春期 午前2 問21
問題文
次の方式で画素にメモリを割り当てる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
🔒 解説は解答すると表示されます
画素座標からのアドレス計算【午前2解説】
正解の理由
始点 (5, 4) と終点 (9, 8) を結ぶ直線は、x が1増えると y も1増える傾き1の直線で、 です。したがって直線上の x=7 の画素は (7, 6) です。メモリは座標 (0, 0) から x 軸方向に連続して割り当てられ、1行は640画素、1画素は16ビット=2バイトなので、画素 (x, y) の先頭アドレスは
です。(7, 6) を代入すると となり、ウが正解です。
解法ステップ
- 直線の式を求める:傾き 、 より 。
- x=7 のとき y=6。対象の画素は (7, 6)。
- (7, 6) までに割り当てられた画素数: 個(y=0〜5 の6行分と、y=6 の行の x=0〜6 の7画素)。
- 1画素は2バイトなので、先頭アドレスは 番地。
選択肢別の誤答解説
- ア: 3847
画素の通し番号で、1画素が2バイトであることを考慮していません。 - イ: 7680
で、x=7 の分(14バイト)を加えていません。 - ウ: 7694
正しいアドレスです。 - エ: 8978
で、y と x を取り違えるなど座標を誤った場合の値です。
よくある誤解
- 画素の通し番号とメモリの番地を混同すること。番地はバイト単位なので、通し番号に1画素当たりのバイト数(2)を掛けます。
- 1行の画素数を480とすること。x 軸方向(横)が640画素なので、y が1増えるごとに640画素分進みます。
補足コラム
一般に、横 W 画素の画面で1画素 B バイトのとき、画素 (x, y) の先頭アドレスは です。このようにメモリを行単位で連続して割り当てる方式を、行優先(ロウメジャー)の配置といいます。
FAQ
Q. なぜ番地はバイト単位なのですか?
A. 図のメモリは1番地当たり8ビット(1バイト)なので、16ビットの画素は2番地分を使います。
A. 図のメモリは1番地当たり8ビット(1バイト)なので、16ビットの画素は2番地分を使います。
関連キーワード: フレームバッファ、画素、アドレス計算、行優先

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

