RMO dan CMO
Ada 2 cara penyimpanan di memori :
Contoh:
1: CONST
2: n = 4 {jumlah baris}
3: m = 3 {jumlah kolom}
4: VAR
5: A: array [1..n,1..m] of integer
A(1,1) A(1,2) A(1,3) | A(2,1) A(2,2) A(2,3) | A(3,1) A(3,2) A(3,3) | A(4,1) A(4,2) A(4,3)
baris – 4
baris – 3
baris – 2
baris – 1
Rumus pencarian lokasi elemen A[i,j] secara RMO
L = Lo + { (i-1) * m + (j-1) } * c
di mana :
1 ≤ i ≤ n
1 ≤ j ≤ n
i = indeks jumlah baris
j = indeks jumlah kolom
m = jumlah kolom
c = ukuran satu elemen
Lo = alamat elemen awal
Contoh :
Lo = 1000, c =2, n = 4, m = 3
A[3,2] = ?
A[3,2] = 1000 + {(3-1)*3 + (2-1)} * 2
= 1000 + 7 * 2
= 1000 + 14
= 1014
Secara umum : untuk matriks yang mempunyai lower bound lk dan upperbound uk,
maka:
Array [1 .. 6 ; 2 .. 5]
l1 = 1; l2 = 2; u1 = 6; u2 = 5
B[3,2] = 1000 + {(3-1) * (5-2+1) + (2 – 2)} * 2
= 1000 + (2*4 + 0) * 2
= 1016
Artinya Data disimpan kolom per kolom sebagai sebuah vector.
Misal:
matriks A dengan dimensi 4 baris & 3 kolom
A(1,1) A(2,1) A(3,1) A(4,1) | A(1,2) A(2,2) A(3,2) A(4,2) | A(1,3) A(2,3) A(3,3) A(4,3) | A(1,4) A(2,4) A(3,4) A(4,4)
kolom – 3
kolom – 2
kolom – 1
Rumus CMO
L = Lo + {(i-1) + (j-1) * n} * c
1 ≤ i ≤ n, 1 ≤ j ≤ m
B[3,2] = 1000 + { (3-1) + (2-2) * (6-1+1)} * 2
= 1000 + (2 + 0 * 6) * 2
= 1004
Download Source Code
Row Major Order (RMO)
Artinya Data disimpan baris per baris sebagai sebuah vector.Contoh:
1: CONST
2: n = 4 {jumlah baris}
3: m = 3 {jumlah kolom}
4: VAR
5: A: array [1..n,1..m] of integer
A(1,1) A(1,2) A(1,3) | A(2,1) A(2,2) A(2,3) | A(3,1) A(3,2) A(3,3) | A(4,1) A(4,2) A(4,3)
baris – 4
baris – 3
baris – 2
baris – 1
Rumus pencarian lokasi elemen A[i,j] secara RMO
L = Lo + { (i-1) * m + (j-1) } * c
di mana :
1 ≤ i ≤ n
1 ≤ j ≤ n
i = indeks jumlah baris
j = indeks jumlah kolom
m = jumlah kolom
c = ukuran satu elemen
Lo = alamat elemen awal
Contoh :
Lo = 1000, c =2, n = 4, m = 3
A[3,2] = ?
A[3,2] = 1000 + {(3-1)*3 + (2-1)} * 2
= 1000 + 7 * 2
= 1000 + 14
= 1014
Secara umum : untuk matriks yang mempunyai lower bound lk dan upperbound uk,
maka:
L = Lo + {(i-l1) * (u2 – l2 + 1) + (j – l2)} * c
Array [1 .. 6 ; 2 .. 5]
l1 = 1; l2 = 2; u1 = 6; u2 = 5
B[3,2] = 1000 + {(3-1) * (5-2+1) + (2 – 2)} * 2
= 1000 + (2*4 + 0) * 2
= 1016
Column Major Order (CMO)
Artinya Data disimpan kolom per kolom sebagai sebuah vector.
Misal:
matriks A dengan dimensi 4 baris & 3 kolom
A(1,1) A(2,1) A(3,1) A(4,1) | A(1,2) A(2,2) A(3,2) A(4,2) | A(1,3) A(2,3) A(3,3) A(4,3) | A(1,4) A(2,4) A(3,4) A(4,4)
kolom – 3
kolom – 2
kolom – 1
Rumus CMO
L = Lo + {(i-1) + (j-1) * n} * c
1 ≤ i ≤ n, 1 ≤ j ≤ m
L = Lo + {(i-l1) + (j-l2) * (u1 – l1 + 1)} * c
B[3,2] = 1000 + { (3-1) + (2-2) * (6-1+1)} * 2
= 1000 + (2 + 0 * 6) * 2
= 1004