RMO dan CMO

Ada 2 cara penyimpanan di memori :


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

Download Source Code
Comments
0 Comments