メモリアドレスの問題(R4.春.21)

マッスルさん  
(No.1)
令和4年春期 午前問21
https://www.ap-siken.com/kakomon/04_haru/q21.html
メモリのアドレスの先頭は何番目かを求める問題についてです。

解説で、「641番目(2行目先頭画素)は1280番地 になります」と書いてありますが、640番目ではないのでしょうか。
また、本問の解説が全体的に理解ができないので、ご丁寧に教えていただけると幸いです。
よろしくお願いいたします。
2023.09.06 15:33
Rさん 
(No.2)
この投稿は投稿者により削除されました。(2023.09.06 16:37)
2023.09.06 16:37
まーぼさん 
(No.3)
座標(0,0)を1番目とするなら座標(639,0)は640番目です。
2行目の先頭の座標は(0,1)ですから(640+1)番目ですね。

座標(7,6)が何番目の画素かというと、(640*6+8)=3848番目の画素ですね。

(1つの画素に2つの番地が割り当てられることに注意して)1番目の画素割り当てられたメモリのアドレスの先頭は0番地、2番目は2番地、3番目は4番地…と続きます。初項0、公差2の等差数列ですから一般項は「0+(n-1)*2」になります。

3848番目の画素に割り当てられたメモリアドレスの先頭の番地を知りたいので、n=3848を代入すると、(3848-1)*2=7694となるのでウが正解とわかります。
2023.09.06 16:33
Rさん 
(No.4)
1画素ごとに2セルずつ取っているのはお分かりでしょうか。
なので、先頭番地の数値は1つずつ増えるのではなく、2つずつ増えるわけです。 

つまり、1行目の(x,y)=(639,0)の先頭ビットは1278番地となります。
したがって、次の行の最も左の画素は、更に+2で1280番地となります。

xが右に移動するほどに2ずつ増加し、行を増すごとに1280ずつ増えていくわけです。
これを一般化した式で表すと
「1280y + 2x」 となります。

問題で示されるx=7の黒い画素は(x,y)=(7,6)なので

1280 * 6 + 2 * 7 = 7694

です。したがって解答はウとなります。
2023.09.06 16:42
マッスルさん  
(No.5)
まーぼさん、Rさんご返信ありがとうございます!
おかげさまで理解できました!
2023.09.06 17:38

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop