Struktur Data - Penempatan Data di Memori



                                         Tabel Alokasi Memori Pada Tipe Data Sederhana


Pada kesempatan kali ini akan dibahas Penempatan/Alokasi Data Array, Struktur, dan Union di memori Komputer(RAM) . Tabel di atas menunjukkan besarnya alokasi memori setiap jenis Tipe Data Sederhana.

Penempatan Array di Memori
Array Satu Dimensi
Tipe Data Array 1 Dimensi dengan elemen sebanyak n membutuhkan Memori sebanyak n Byte. Nilai-nilai dari Array char tersebut diletakkan dalam alamat yang berurutan.


Contoh:
- Elemen char[0] diletakkan di Alamat Sel Memori 0x001
- Elemen char[1] diletakkan di Alamat Sel Memori 0x002

Array Dua Dimensi
Tipe Data Array 2 Dimensi dengan elemen sebanyak m x n , membutuhkan Memori sebanyak m x n Byte. Pada Array 2 Dimensi, setiap elemen m akan mengikat elemen sebanyak n.
Contoh:
- Elemen char[0][0] diletakkan di Alamat Sel Memori 0x00E
- Elemen char[0][1] diletakkan di Alamat Sel Memori 0x00F
- Elemen char[1][0] diletakkan di Alamat Sel Memori 0x010
- Elemen char[1][1] diletakkan di Alamat Sel Memori 0x011
Array Tiga Dimensi
Tipe Data Array 3 Dimensi dengan elemen sebanyak l x m x n , membutuhkan Memori sebanyak l x m x n Byte. Pada Array 3 Dimensi, setiap elemen l akan mengikat sebanyak m dan setiap elemen m akan mengikat elemen sebanyak n. Pola yang sama digunakan antara Penempatan Memori Array Tiga Dimensi dengan Array Dua Dimensi.

Penempatan Struktur di Memori
Tipe Data Struktur membutuhkan Memori sebanyak jumlah Memori dari elemennya.
struct Rekaman1
{
     int a;
     int c;
} Data;
Tipe Data Rekaman 1 membutuhkan ruang Memori sebanyak 8 Byte. 8 Byte tersebut didapat dari menambahkan masing-masing 4 dari variabel a dan c yang bertipe Int.
Contoh:
- Variabel Data.a diletakkan di alamat Memori 0x001 s/d 0x004
- Variabel Data.c diletakkan di alamat Memori 0x005 s/d 0x008

Penempatan Union di Memori
Tipe Data Union membutuhkan Memori sebanyak Memori terbesar dari Elemennya.
Contoh:
union Satu
{
     int a;
     char b;
} TheUnion;
Tipe Data Satu memiliki kebutuhan Memori sebanyak 4 Byte ( Type Data terbesar dari elemen-elemennya adalah Int). Elemen b yang bertipe data char menggunakan sebagian kecil dari Memori int a untuk menyimpan Nilainya.
Contoh:
-Nilai int a diletakkan di alamat Memori 0x001 (LSB) s/d 0x004 (MSB)
-Nilai char b diletakkan di alamat Memori 0x001
*Keterangan: LSB =Least Significant Byte, MSB= Most Significant Byte.
Tipe Data Union adalah Tipe data yang melakukan Share Memori , sehingga elemen int a dan char b menggunakan Memori Union tersebut secara bergantian. Berbeda dengan Tipe Data Struktur, Tipe Data Union tidak memungkinkan penyimpanan 2 buah data dari 2 buah Elemen Pembentuknya.

Contoh Soal dalam Mencari alamat pada Array Tiga Dimensi:
Diketahui Variabel Array Tiga Dimensi : int A[2][4][5]
Diketahui Alamat Array A[0][0][0] : 0x1000
Ditanya Berapa Alamat dari Elemen A[1][2][4]
Jawab:
  • Diketahui &A[0][0][0] = 0x1000 , Ditanya &A[1][2][4] adalah?
  • Hitung dulu perpindahan Memori dari Total Perpindahan Elemen:
    • Pindah Grup= 1-0 = 1 Grup = 1*4*5 *4Byte (Besar Memory Type Data Int) = 80Byte
    • Pindah Baris= 2-0 = 2 Baris = 2*5 *4Byte = 40Byte
    • Pindah Kolom= 4-0 = 4 Kolom = 4 *4Byte = 16Byte
    • Total Perpindahan Memori= 136Byte
  • Ubah Total Perpindahan ke dalam bentuk HexaDecimal:
    • 136= 8(16^1) + 8(16^0) = H0088
  • Alamat Nilai A[1][2][4] yang dicari didapat dengan menjumlahkan Total Perpindahan ke Alamat Awal:
    • 0x1000 + H0088 = 0x1088



Please Click This Link Below to Subscribe Ledakan Lemon
SUBSCRIBE
CTRL+D to Bookmark This Page
Click Follow Button on The Left-Top Corner of this page to Follow this Blog

0 komentar: (+add yours?)

Posting Komentar