PEMETAAN (MAPPING) ARRAY DIMENSI SATU
Berikut contoh soal tentang pemetaan array dimensi satu,
Contoh soal;
1. Array float A[5] dengan nilai awal A[1] = 0002F(H) . Breapa nilai A[3] ?(hasil dalam hexa)
·
Tabel
ilustrasi
0 1 2 3 4
↓ ↓
A[1]=0002F(H) A[3]…?
Diketahui ;
• Perpindahan = 3 – 1 = 2 elemen
• Besar memory = float = 4 byte
• B = Posisi index awal = 0002F(H)
Ditanya = A[3]…?
Jawab ;
A[3] = B + (besar memory * perpindahan)
= 0002F(H) + (4 * 2)
Konversi nilai 2F(H) ke decimal ;
F(H) = 15(D)
2F(H) = (2 * 161) + (15 * 160)
= 32 + 15
= 47(D)
= 47(D) + 8(D)
= 55(D)
konversi nilai 55(D) ke hexa ;
55/16 = 3, sisa 7
5/16 = 3, sisa 3
= 37(H) (di baca dari bawah)
Hasilnya yaitu 37(H)
2. Array float A[10] dengan nilai awal A[8] = 0012F(H) . Breapa nilai A[3] ?(hasil dalam hexa)
·
Table
ilsutrasi
0 1 2 3 4 5 6 7 8 9
↓ ↓
A[3]..? A[8]=0012F(H)
Diketahui ;
• Perpindahan = 3 – 8 = -5 elemen
• Besar memory = float = 4 byte
• B = Posisi index awal = 0012F(H)
Ditanya = A[8]…?
Jawab ;
A[3] = B + (besar memory * perpindahan)
= 0012F(H) + (4 * 5)
Konversi nilai 12F(H) ke desimal;
F(H) = 15(D)
12F(H) = (1 * 162) + (2 * 161) + (15 * 160)
=256 + 32 + 15
= 303(D)
= 303(D) + 20(D)
= 323(D)
konversi nilai 323(D) ke hexa ;
323/16 = 20, sisa 3
20/16 = 1, sisa 4
1/16 = 0, sisa 1
= 143(H) (di baca dari bawah)
Hasilnya yaitu 143(H)
PEMETAAN (MAPPING) ARRAY DIMENSI DUA
Terbagi Dua cara pandang (representasi) yang berbeda :
1. Secara Kolom Per Kolom (Coloumn Major Order/CMO)
@M[i][j] = M[0][0] + {(j - 1) * K + (i - 1)} * L
2. Secara Baris Per Baris (Row Major Order / RMO)
@M[i][j] = M[0][0] + {(i - 1) * N + (j - 1)} * L
Keterangan :
@M[i][j] = Posisi Array yg dicari,
M[0][0] = Posisi alamat awal index array,
L = Ukuran memory type data,
K = Banyaknya elemen per kolom,
N = Banyaknya elemen per baris,
i = Baris,
j = kolom
3. cara lain mengenal alamat elemen array dimensi 2
cara yang satu ini dapat memudahkan anda untuk dapat mengerjakan soal pemetaan array dimensi 2 tanpa menggunakan rumus.
Berikut contoh soal pemetaan array dimensi 2 menggunakan cara ke 3;
• contoh soal
1. Array float A[5] [4] dengan nilai awal A[1][0] = 0002F(H) . berapa nilai A [3][3] ?(RMO & CMO)
Ilustrasi
tabel
Array
|
0
|
1
|
2
|
3
|
0
|
|
|
|
|
1
|
0002F(H)
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
Ditanya..?
|
4
|
|
|
|
|
a) Pemetaan RMO
a. Hitung besarnya perpindahan baris ;
Array awal ada di baris 1, array yang di cari ada di baris 3,
berarti perpindahan baris adalah 3 dikurangi 1 = 2
b. Dalam 1 baris ada 4 kolom, sehingga besar perpindahan adalah 2 dikali 4 = 8
c. Besar perpindahan kolom adalah 3 dikurangi 0 = 3
d. Total perpindahan adalah 8 ditambah 3 = 11
• Jalur perpindahan
X[1][1] → X[1][2] → X[1][3] → X[2][0] → X[2][1] → X[2][2] → X[2][3] → X[3][0] → X[3][1] → X[3][2] →X[3][3]
• Hasil
= 2F(H) + (11(D) * 4)
Konversi nilai 2F(H) ke desimal;
F(H) = 15(D)
2F(H) = (2 * 161) + (15 * 160)
= 32 + 15
= 47(D)
= 47(D) + 44(D)
= 91(D)
konversi nilai 91(D) ke hexa ;
91/16 = 5, sisa 11(di tulis B)
5/16 = 0, sisa 5
= 5B(H) (di baca dari bawah)
Hasilnya yaitu 5B(H)
b) Pemetaan CMO
a. Hitung besarnya perpindahan kolom ;
Array awal ada di kolom 0, array yang di cari ada di kolom 3,
berarti perpindahan kolom adalah 3 dikurangi 0 = 3
b. Dalam 1 kolom ada 5 baris, sehingga besar perpindahan adalah 5 dikali 3 = 15
c. Besar perpindahan baris adalah 3 dikurangi 1 = 2
d. Total perpindahan adalah 15 ditambah 2 = 17
• Jalur perpindahan
X[2][0] → X[3][0]→X[4][0] → X[0][1] → X[1][1] → X[2][1] → X[3][1] → X[4][1] → X[0][2] → X[1][2] → X[2][2] → X[3][2] → X[4][2] → X[0][3] → X[1][3] → X[2][3]→X[3][3]
• Hasil
= 2F(H ) + (17(D) * 4)
Konversi nilai 2F(H) ke desimal;
F(H) = 15(D)
2F(H) = (2 * 161) + (15 * 160)
= 32 + 15
= 47(D)
= 47(D) + 68
=115(D)
konversi nilai 115(D) ke hexa ;
115/16 = 7, sisa 3
7/16 = 0, sisa 7
= 73(H) (di baca dari bawah)
Hasilnya yaitu 73(H)
2. Array int A[5][4] dengan nilai awal A[3][3] = 00CF(H) . berapa nilai A [0][1] ?(RMO & CMO)
Jawab ;
Ilustrasi table
Array
|
0
|
1
|
2
|
3
|
0
|
|
Ditanya..?
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
00CF(H)
|
4
|
|
|
|
|
a) Pemetaan RMO
a. Hitung besarnya perpindahan baris ;
Array awal ada di baris 3, array yang di cari ada di baris 0,
berarti perpindahan baris adalah 0 dikurangi 3 = -3
b. Dalam 1 baris ada 4 kolom, sehingga besar perpindahan adalah -3 dikali 4 = -12
c. Besar perpindahan kolom adalah 1 dikurangi 3 = -2
d. Total perpindahan adalah -12 ditambah -2 = -14 (tanda (-) hanya sebatas simbol )
• Jalur perpindahan
X[3][2] → X[3][1] → X[3][0] → X[2][3] → X[2][2] → X[2][1] → X[2][0] → X[1][3] → X[1][2] → X[1][1] →X[1][0] → X[0][3] → X[0][2] →X[0][1]
• Hasil
= CF(H) + (14(D) * 2)
Konversi nilai CF(H) ke desimal;
F(H) = 15(D)
C(H) = 12(D)
CF(H) = (12 * 161) + (15 * 160)
= 192 + 15
= 207(D)
= 207(D) + 28(D)
= 235(D)
konversi nilai 235(D) ke hexa;
235/16 = 14, sisa 11 (ditulis B)
14/16 = 0, sisa 14 (ditulis E)
= EB(H) (di baca dari bawah)
Hasilnya yaitu EB(H)
b) Pemetaan CMO
a. Hitung besarnya perpindahan kolom ;
Array awal ada di kolom 3, array yang di cari ada di kolom 1,
berarti perpindahan kolom adalah 1 dikurangi 3 = -2
b. Dalam 1 kolom ada 5 baris, sehingga besar perpindahan adalah -2 dikali 5 = -10
c. Besar perpindahan baris adalah 0 dikurangi 3 = -3
d. Total perpindahan adalah -10 ditambah -3 = -13 (tanda (-) hanya sebatas simbol )
• Jalur perpindahan
X[1][1] → X[2][1] → X[3][1] → X[4][1] → X[0][2] → X[1][2] → X[2][2] → X[3][2] → X[4][2] → X[0][3] →X[1][3] → X[2][3] → X[3][3]
• Hasil
= CF(H) + (13(D) * 2)
Konversi nilai CF(H) ke desimal;
F(H) = 15(D)
C(H) = 12(D)
CF(H) = (12 * 161) + (15 * 160)
= 192 + 15
= 207(D)
= 207(D) + 26(D)
= 233(D)
konversi nilai 233(D) ke hexa;
235/16 = 14, sisa 9
14/16 = 0, sisa 14 (ditulis E)
= E9(H) (di baca dari bawah)
Hasilnya yaitu E9(H)
0 komentar:
Posting Komentar