阿摩線上測驗 登入

申論題資訊

試卷:111年 - 111 司法特種考試_三等_檢察事務官電子資訊組:程式語言#110333
科目:程式語言
年份:111年
排序:0

申論題內容

四、若有一個二維陣列宣告為 A[1..3, 1..5]且已知其 A[1, 1]的位址為 100,試 以列為主及以行為主的表示法,求 A[2, 4]之位址為何?(25 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

要計算 A[2,4]A[2, 4]A[2,4] 的位址,首先要確定每個元素佔據的記憶體大小,以及以列為主(Row-major order)和以行為主(Column-major order)的表示法。

假設每個元素佔據一個單位的記憶體空間,我們可以使用以下公式來計算。

以列為主的表示法 (Row-major order)

以列為主的表示法中,陣列元素按照列的順序依次儲存。對於二維陣列 A[m..n,p..q]A[m..n, p..q]A[m..n,p..q],元素 A[i,j]A[i, j]A[i,j] 的位址可以由以下公式計算:

地址=基地址+[(i−起始列)×列的元素數]+(j−起始行)\text{地址} = \text{基地址} + [(i - \text{起始列}) \times \text{列的元素數}] + (j - \text{起始行})地址=基地址+[(i起始列)×列的元素數]+(j起始行)

套用到 A[1..3,1..5]A[1..3, 1..5]A[1..3,1..5] 中:

  • 基地址 = 100
  • 起始列 = 1
  • 起始行 = 1
  • 列的元素數 = 5

所以 A[2,4]A[2, 4]A[2,4] 的位址為:

地址=100+[(2−1)×5]+(4−1)\text{地址} = 100 + [(2 - 1) \times 5] + (4 - 1)地址=100+[(21)×5]+(41) 地址=100+(1×5)+3\text{地址} = 100 + (1 \times 5) + 3地址=100+(1×5)+3 地址=100+5+3\text{地址} = 100 + 5 + 3地址=100+5+3 地址=108\text{地址} = 108地址=108

以行為主的表示法 (Column-major order)

以行為主的表示法中,陣列元素按照行的順序依次儲存。對於二維陣列 A[m..n,p..q]A[m..n, p..q]A[m..n,p..q],元素 A[i,j]A[i, j]A[i,j] 的位址可以由以下公式計算:

地址=基地址+[(j−起始行)×行的元素數]+(i−起始列)\text{地址} = \text{基地址} + [(j - \text{起始行}) \times \text{行的元素數}] + (i - \text{起始列})地址=基地址+[(j起始行)×行的元素數]+(i起始列)

套用到 A[1..3,1..5]A[1..3, 1..5]A[1..3,1..5] 中:

  • 基地址 = 100
  • 起始行 = 1
  • 起始列 = 1
  • 行的元素數 = 3

所以 A[2,4]A[2, 4]A[2,4] 的位址為:

地址=100+[(4−1)×3]+(2−1)\text{地址} = 100 + [(4 - 1) \times 3] + (2 - 1)地址=100+[(41)×3]+(21) 地址=100+(3×3)+1\text{地址} = 100 + (3 \times 3) + 1地址=100+(3×3)+1 地址=100+9+1\text{地址} = 100 + 9 + 1地址=100+9+1 地址=110\text{地址} = 110地址=110

結論

  • 以列為主的表示法中, A[2,4]A[2, 4]A[2,4] 的位址是 108。
  • 以行為主的表示法中, A[2,4]A[2, 4]A[2,4] 的位址是 110。