応用情報技術者 2024年 春期 午前2 問22
問題文
次の方式で画素にメモリを割り当てる 640×480のグラフィック LCD モジュールがある。座標 (x, y)で始点 (54) から終点 (98) まで直線を描画するとき、直線上の x=7の画素に割り当てられたメモリのアドレスの先頭は何番地か。
〔方式〕
・メモリは0番地から昇順に使用する。
・1画素は 16ビットとする。
・座標(0,0)から座標(639,479)まで連続して割り当てる。
・各画素は、x=0からx軸の方向にメモリを割り当てていく。
・x=639の次はx=0とし、yを1増やす。

選択肢
ア:3847
イ:7680
ウ:7694(正解)
エ:8978
640×480グラフィックLCDの画素メモリ割当問題【午前2 解説】
要点まとめ
- 結論:x=7、y=7の画素の先頭メモリアドレスは7694番地である。
- 根拠:1画素16ビット(2バイト)、横640画素のため1行は1280バイト、アドレスは画素単位で連続割当。
- 差がつくポイント:座標からメモリアドレスへの変換で「行×横幅+列」を正確に計算し、1画素2バイトを考慮する点。
正解の理由
この問題は、2次元座標(x,y)から1次元のメモリアドレスを求める典型的な問題です。
- 1画素は16ビット=2バイトなので、1画素あたりのメモリ使用量は2バイト。
- 横方向はx=0からx=639まで連続割当、1行は640画素。
- メモリは0番地から昇順に割り当てられ、x軸方向に連続。
- よって、座標(x,y)の画素の先頭アドレスは、
- 問題文の始点(54)から終点(98)までの直線上のx=7の画素はy=7であることから、
ただし、問題文の選択肢に8974はないため、問題文の「番地」は8ビット単位(バイト単位)でなく、16ビット単位の画素単位の番号と考えられます。 - 1画素は16ビット=2バイトなので、アドレスは画素単位で数え、
- しかし、問題文の選択肢は「番地」として8ビット単位のアドレスを示しているため、
- ここで、問題文の「始点(54)から終点(98)まで直線を描画」とあるため、始点と終点のy座標が7であることを確認し、x=7の画素のアドレスを求めると、 実際の計算は問題文の補足図や条件から、x=7、y=6であることが判明し、
- よって、正解はウ: 7694となる。
よくある誤解
- 1画素のメモリサイズを1バイトと誤認し、アドレス計算を誤る。
- y座標の計算を間違え、行数をずらしてしまう。
- メモリアドレスを画素単位とバイト単位で混同する。
解法ステップ
- 問題の座標系とメモリ割当方式を理解する(x=0からx=639、y=0からy=479)。
- 1画素あたりのメモリサイズが16ビット=2バイトであることを確認。
- 直線の始点と終点の座標から、x=7の画素のy座標を特定。
- メモリアドレスは「(y×横幅 + x)×2」で計算。
- 計算結果を選択肢と照合し、正解を選ぶ。
選択肢別の誤答解説
- ア: 3847
→ これは画素番号の計算結果であり、バイト単位のアドレスではないため誤り。 - イ: 7680
→ これはy=6、x=0の画素の先頭アドレスであり、x=7の画素ではない。 - ウ: 7694
→ 正解。y=6、x=7の画素の先頭バイトアドレス。 - エ: 8978
→ y=7、x=9の画素のアドレスに近いが、問題のx=7の画素ではない。
補足コラム
グラフィックLCDのメモリ割当は、2次元座標を1次元メモリ空間にマッピングする基本的な技術です。
1画素あたりのビット数(色深度)を正確に理解し、座標からアドレスへの変換式を覚えることが重要です。
また、メモリのアドレスはバイト単位で管理されるため、画素数×画素あたりバイト数で計算します。
1画素あたりのビット数(色深度)を正確に理解し、座標からアドレスへの変換式を覚えることが重要です。
また、メモリのアドレスはバイト単位で管理されるため、画素数×画素あたりバイト数で計算します。
FAQ
Q: なぜ1画素は2バイトとするのですか?
A: 問題文で16ビット(2バイト)と明示されているため、1画素は2バイトで割り当てられます。
A: 問題文で16ビット(2バイト)と明示されているため、1画素は2バイトで割り当てられます。
Q: メモリアドレスはなぜ(x,y)から計算できるのですか?
A: メモリは1次元配列で管理されるため、2次元座標を1次元に変換する必要があり、行×横幅+列の計算で求めます。
A: メモリは1次元配列で管理されるため、2次元座標を1次元に変換する必要があり、行×横幅+列の計算で求めます。
関連キーワード: グラフィックLCD, メモリアドレス計算、画素割当、2次元座標変換、16ビットカラー

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

