戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2018年 秋期 午前2 問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増やす。
応用情報技術者 2018年 秋期 午前2 問20の問題画像

選択肢

ア:3847番地
イ:7680番地
ウ:7694番地(正解)
エ:8978番地

🔒 解説は解答すると表示されます

画素座標からのアドレス計算【午前2解説】

正解の理由

始点は (5,4)、終点は (9,8) です。これらを結ぶ直線の傾きは (8−4)/(9−5)=1で、直線上の点はy = x − 1を満たします。したがってx=7のときy = 6となる画素は座標 (7,6) です。メモリ割り当ては行優先(xが最も速く変化)で、1画素は16ビット=2バイトなので、先頭バイトアドレスは次の式で求まります。
これに (x,y)=(7,6) を代入すると
よって選択肢のうち ウ(7694番地)が正しいです。

解法ステップ

  1. 始点 (5,4) と終点 (9,8) を確認する。
  2. 直線の傾きを計算する:傾き = (y2 − y1)/(x2 − x1) = (8−4)/(9−5) = 1。
  3. 直線の式を決める:y − 4 = 1×(x − 5) → y = x − 1。
  4. 指定のx=7を代入してyを求める:y = 7 − 1 = 6。対象画素は (7,6)。
  5. 1画素=2バイト、行幅=640ピクセルなのでバイト先頭アドレスを計算: 。

選択肢別の誤答解説

  • ア: 3847番地
    これは (6×640+7)=3847を計算した値で、画素の「インデックス(画素番号)」を求めたが、1画素が2バイトである点を忘れてバイトアドレスに換算していない誤りです。
  • イ: 7680番地
    これは2×(6×640)=2×3840=7680を計算した値です。yは正しく6としたが、xのオフセット(+7)を加えるのを忘れてしまったミスです。
  • ウ: 7694番地(正解)
    上記の正しい手順で得られるバイト先頭アドレスです。
  • エ: 8978番地
    これはyを7、xを9など誤った座標に基づく計算や、直線の式をy=xと誤認して端点 (9,8) のxを用いるなどの誤りで生じる値です(例:2×(7×640+9)=8978)。始点・終点の読み替えや直線の式の誤解が原因になります。

よくある誤解

  • アドレス計算で「画素番号」と「バイトアドレス」を混同する。画素番号 = y×幅 + x、バイトアドレス = 画素番号×(バイト/画素) です。
  • 直線の式の導出でxとyのどちらを独立変数にするか迷い、誤ったyを使う。

補足コラム

汎用的なフレームバッファのバイトオフセットは次の式で表せます。
ここでBは1画素あたりのバイト数(今回B=2)、Wは画面幅(今回W=640)です。行優先(row-major)の配置はグラフィックモジュールで最も一般的であり、xの増加がメモリ上で連続することを覚えておくと良いです。エンディアン(バイト順)は画素の先頭アドレスには影響しませんが、同じ画素の高位・低位バイトの意味は変わります(色表現の読み書き時に注意)。
簡単な確認用Python(例):
W = 640
B = 2
x, y = 7, 6
address = B * (y * W + x)
print(address)  # 7694

FAQ

Q. 1画素16ビットなら「番地」はどの単位ですか?
A. 図のメモリ表記がバイト単位(0番地、1番地、…)で、かつ「8 bit」と記されているため、番地はバイト単位です。したがって画素先頭の番地はバイトオフセットで表します。
Q. もし画素配置が列優先(縦優先)ならどうなる?
A. その場合は逆にxとyの役割が入れ替わり、算式は のようになります。問題文の「x=0からx軸方向に割り当てていく」「x=639の次はx=0でyを1増やす」から行優先であることが明示されています。

関連キーワード: 2D→1D変換、フレームバッファ、行優先配置、バイトオフセット、ピクセルアドレス計算
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について