17 若四維陣列 A[-2:3,0:2,2:5,1:5]是以列主序(Row-major)的方式排列資料,而此陣列在記憶體中的初始位
置為 500,且陣列中的每個元素的儲存皆需要 4 個位元組(Bytes)。請問陣列 A[0,1,4,2]存放在記憶體中的位置始於多少?
(A) 820
(B) 824
(C) 1104
(D) 1108
統計: A(33), B(96), C(206), D(68), E(0) #2129597
詳解 (共 5 筆)
不知道還來不來得及
看看這樣解釋你有沒有比較了解
分成A[第幾學期、學期初中末、同學、考科分數]
寫起來,假設啦成績如下
小明 小美 小王 小天
國 80 90 30 60
英 90 70 45 70
數 86 84 60 65
社 85 65 70 45
自 83 50 59 62
這是第「一」學期「剛開始」的時候,
老師給他們測驗的模考成績
這個陣列的表達就是:A[0,0,0,0]=80
白話文: 第一學期 剛開始 小明 的 第一個科目成績=80
以Row-Major講明了就是由上而下去排列
那以此類推A[0,0,0,1]就是:?
嘿沒錯,第一學期 剛開始 小明的 第二個科目成績=90
————————————————————————
講了這麼多,題目怎麼算?
A[-2~3, 0~2, 2~5, 1~5]
且位置500是指向陣列的第一個項目的位置!
A[-2,0,2,1]=500!!!
我答案要我求什麼?A[0,1,4,2]嘛對不對
來想像查詢成績!!!
那我們要把「差距」找出來
我們目前要求陣列A[0,1,4,2]是對應到
#以-2為開始的學期數目!
什麼意思???
-2和0我們同時兩邊加上2,不就是0和2了嗎?
這樣代表我只要求第「3個學期的成績表嘛!」
#並以0為開始的 期初中末 成績排列嘛,我要求A[0,1,4,2]代表
要求第三個學期 的 期「中」 成績表嘛
再來再來⋯⋯⋯⋯A[0,1,4,2]就是我要第三個學生 小王 的成績對不對?
最後就是我要他的英文成績嘛!
好
建立這樣的觀念就比較好解釋了
第一個學期的學期初中末 的學生科目成績需要幾格
四個學生*五個科目= 20格
求第三個學期?怎麼算
第一學期全部格數 +第二學期 全部格數+第三學期 你要的位置前的格數
20*3(初中末)* + 20*3(初中末) + (期初20格+期中的17格)
一共157格
好第一格位置是500!那第157格?答案是500+156*4bit =1104!
