102資料處理大意問題 - 考試

Table of Contents

※ 引述《Knight1027 (Knight1027)》之銘言:
: 假設M為一個二維陣列,M(3,2)的位址是1110,M(2,3)的位址是1115。
: 假設每一個元素占一單位,陣列M宣告為M(m,n),請問下列?述何者正確?
: (A)M(5,4)的位址在1138 (B)M(2,2)的位址在1106 (C)m的值為9 (D)M(1,4)的位址在1120
: 答案為:(D)
: 小弟想請高手大大們幫忙解惑~~感謝!!


M
1 2 3 4
┌──┬──┬──┬──┬
│ │ │ │ │
1│ │ │ │ │
├──┼──┼──┼──┼
│ │ │1115│ │
2│ │ │ │ │
├──┼──┼──┼──┼
│ │ │ │ │
3│ │1110│ │ │
├──┼──┼──┼──┼
│ │ │ │ │
4│ │ │ │ │
├──┼──┼──┼──┼


把簡單的二維矩陣搭配題目畫出來之後

可以發現

這個矩陣排的列方式是 column-major



因為一個位址是1個記憶體空間

所以可以得知M(2,2)是1110-1=1109

1110+m=1115

m=6

把M的行數算出來之後

剩下的選項就可以求出來了

1 2 3 4
┌──┬──┬──┬──┬
│ │ │ │ │
1│1102│1108│1114│1120│
├──┼──┼──┼──┼
│ │ │ │ │
2│1103│1109│1115│1121│
├──┼──┼──┼──┼
│ │ │ │ │
3│1104│1110│1116│1122│
├──┼──┼──┼──┼
│ │ │ │ │
4│1105│1111│1117│1123│
├──┼──┼──┼──┼
│ │ │ │ │
5│1106│1112│1118│1124│
├──┼──┼──┼──┼
│ │ │ │ │
6│1107│1113│1119│1125│
└──┴──┴──┴──┴






如果要寫的正式一點



每個元素佔一個位址 所以c=1

要先判斷是row-major 或是 column-major

如果是row-major

則 Loc(A(3.2))-Loc(A(2,3))=c[(3-2)W+(2-3)]

1110-1115=W-1=-5

得W=-4

但因為每一維的大小都必須>0

所以並不是row-major


所以

Loc(M(3,2))-Loc(M(2,3))=c[(3-2)+(2-3)W]

1110-1115=1-W

得W=6

所以這陣列是column-major

且m=W=6



再計算

Loc(M(5,4))=Loc(M(3,2))+c[(5-3)+(4-2)m]

=1110+2+2*6=1124


Loc(M(2,2))=Loc(M(3,2))+c[(2-3)+(2-2)m]

=1110+(-1)+0*6=1109


Loc(M(1,4))=Loc(M(3,2))+c[(1-3)+(4-2)m]

=1110+(-2)+2*6=1120


--
█ █ ████ ▁▃▄▅▆▇█
█ █ █ █
█ █
█ █ █ ▌▂▃▄▅
█ █ █ █ █ █ ▕飛▏
█ █ ████

--

All Comments

Hedda avatarHedda2014-01-12
這學期初才教!!(我大二