Sistem bilangan adalah suatu cara untuk mewakili besaran dari suatu item
fisik. Konsep dasar sistem bilangan dikarakteristikkan oleh basis (radix), absolute
Basis yang digunakan sistem bilangan tergantung dari jumlah nilai bilangan
yang dipergunakan.
penulisan:
Bentuk nilai desimal dapat berupa integer (bilangan bulat) dan pecahan.
Dapat ditulis dalam bentuk eksponensial yaitu ditulis dengan mantissa dan
exponent. Contoh:
Penulisan base/radix dituliskan setelah absolut digit, yaitu A10, atau A(D).
Dalam hal ini yang dituliskan adalah A10. Contoh nilai 435210 dan 762,1510
dapat diartikan:
dituliskan setelah absolut digit, yaitu A2 atau A(B). Dalam hal ini yang
dituliskan setelah absolut digit, yaitu A8 atau A(O). Dalam hal ini yang dituliskan
absolut digit, yaitu A16 atau A(H). Dalam hal ini yang dituliskan adalah A16.
Dituliskan:
Komputer bekerja atas dasar sistem biner berupa 0 dan 1 yang disebut bit.
Bit merupakan satuan data terkecil dalam sistem komputer. Bit-bit dapat digunakan
untuk menyusun karakter apa saja. Sebuah karakter dinyatakan dengan 8 bit atau 16
bit.
1. Byte
2. Kilobyte (KB)
Biasa digunakan untuk berkas gambar berukuran kecil. 1 Kilobyte = 1024 byte
3. Megabyte (MB)
5. Terabyte (TB)
6. Petabyte (PB)
1 PB = 1024 TB
Sistem Pengkodean
kode biner untuk mewakili sebuah karakter. Ada beberapa kode yang akan dibahas,
Merupakan kode biner yang digunakan hanya untuk mewakili nilai digit
desimal saja. Sebuah karakter BCD dinyatakan dengan 4 bit Karakter yang
4. Unicode
Konversi Bilangan
bisa dibagi lagi. Kemudian sisa pembagian diurutkan dari bawah ke atas
dalam format 8 bit. Contoh nilai 8910 akan dikonversikan menjadi Biner.
Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak
bisa dibagi lagi. Cara yang digunakan sama dengan bilangan biner. Contoh nilai
Dengan cara membagi bilangan desimal dengan 16 (basis hexa) sampai tidak
bisa dibagi lagi. Cara yang digunakan sama dengan bilangan biner.
Contoh nilai 12310 akan dikonversikan menjadi Hexa
dengan radix dan position value-nya. Contoh bit 11 01012 akan dikonversikan
menjadi Desimal.
Dengan cara membagi digit biner tersebut ke dalam tiga digit dari kanan.
Dengan cara membagi digit biner tersebut ke dalam empat digit dari kanan.
dengan radix dan position valuenya. Contoh bit 3718 akan dikonversikan
menjadi Desimal.
Dengan cara mengkonversikan setiap satu digit octal menjadi tiga digit biner.
dikonversikan terlebih dahulu ke Desimal atau Biner. Contoh bit 2438 akan
dengan radix dan position valuenya. Contoh bit 8F16 akan dikonversikan
menjadi Desimal.
Dengan cara mengkonversikan setiap satu digit hexa menjadi empat digit
dari oktal ke hexa. Contoh bit 8F16 akan dikonversikan menjadi Oktal
aritmatik, pemrosesan data, dan operasi logik. Type data yang digunakan dalam
berkode biner.
3. Data Bit Tunggal: digunakan oleh operasi seperti SET, CLEAR, dan TEST.
27
28
Representasi Integer
selain oleh nilai bilangannya juga dengan adanya tambahan tanda (Signed Integer).
diidentifikasikan sebagai tanda (sign). Jika bit paling kiri adalah nol maka
bilangan tersebut positif. Jika bit paling kiri adalah satu maka bilangan
tersebut negative.
Contoh:
+1810 = 000100102
−1810 = 100100102
Kelemahan Sign-Magnitude:
+010 = 000000002
−010 = 100000002
00110110 = 11001001
Penjumlahan Biner
0+0=0
1+0=1
0+1=1
1 + 1 = 0 (carry out 1)
Maksud dari carry out, hasilnya tidak bisa memuat lebih dari 1 digit, tetapi
disimpan ke dalam kolom sebelah yang lebih tinggi nilainya (digit paling kiri yang
diabaikan).
Contoh:
31
Contoh: 8 + (-4).
Contoh: 8 + (-11).
Contoh: -8 + (-7)
32
sebelumnya Contoh :
Suatu Array X dideklarasikan sbb : int A [3][4][2]; maka jumlah elemen Array
33
34
Contoh :
awal index A[0][0][0] berada di 0011(H) dan ukuran type data int = 2 Tentukan
Tringular Array
diagonal utama = 0), ataupun Lower Tringular (seluruh elemen di atas diagonal
utama
= 0). Dalam Array Lower Tringular dengan N baris, jumlah maksimum elemen <> 0
pada baris ke-I adalah = I, karenanya total elemen <> 0, tidak lebih dari
36
Contoh :
Diketahui suatu array segitiga atas memiliki 3 baris dan kolom, tentukan
I = N(N+1) / 2
I = 3 (3+1) / 2
= 12 / 2
=6
Suatu Array Upper Tringular dan Array Lower Tringular dapat dengan order
yang sama, dapat disimpan sebagai suatu array dengan order yang berbeda,
Contohnya :
Sparse Array
Suatu Array yang sangat banyak elemen nol-nya, contohnya adalah Array A
perubah yang disebut dengan perubah dinamis (Dinamic variable). Perubah Dinamis
(Dinamic variable) adalah suatu perubah yang akan dialokasikan hanya pada saat
diperlukan, yaitu setelah program dieksekusi. Perbedaan Perubah Statis & Dinamis
adalah pada perubah statis, isi memory pada lokasi tertentu (nilai perubah) adalah
data sesungguhnya yang akan diolah. Sedangkan pada perubah dinamis, nilai
perubah adalah alamat lokasi lain yang menyimpan data sesungguhnya. Dengan
demikian data yang sesungguhnya dapat dimasukkan secara langsung. Dalam hal
5.1 Pointer
pemrograman C++, Type Data Pointer dideklarasikan dengan bentuk umum : Type
37
Type Data dapat berupa sembarang type data, misalnya char, int atau float.
Void main()
{
int x,y,*z;
x = 75; //nilai x = 75
y = x; //nilai y diambil dari nilai x
z = &x; //nilai z menunjuk kealamat pointer dari nilai
x
getch();
}
Salah satu Struktur Data Dinamis yang paling sederhana adalah Linked List
atau Struktur Berkait atau Senarai Berantai, yaitu suatu kumpulan komponen yang
disusun secara berurutan dengan bantuan Pointer. Linked List (Senarai Berantai)
1. Medan Informasi
Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut tidak menunjuk ke Data
Linked List juga mengandung sebuah variable Penunjuk List, yang biasanya
diberi nama START (AWAL) yang berisi alamat dari simpul pertama dalam
List.
Berikut ini merupakan contoh dari Penyajian Linked List Dalam Memory :
Kata Single berarti field pointer-nya hanya satu dan satu arah,pada akhir node
Sedangkan Linked List merupakan node-node tersebut saling terhubung satu sama
lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk ke
NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked
list.
Deklarasi Node :
typedef struct TNode{
int data;
TNode *next;
};
Keterangan:
a. Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data
bertipe integer dan field next yang bertipe pointer dari TNode
b. Setelah pembuatan struct, buat variabel head yang bertipe pointer dari
TNode *baru;
baru->data =
databaru; baru->next
= NULL;
Dibutuhkan satu buah variabel pointer : head yang akan selalu menunjuk pada
Gambar 5.7 Contoh Single Linked List Non Circular Menggunakan Head
1. Deklarasi Pointer Penunjuk Head Single Linked List
Manipulasi linked list tidak dapat dilakukan langsung ke node yang dituju,
TNode *head;
Fungsi Inisialisasi Single Linked List
void init()
{
head = NULL;
}
Jika pointer head tidak menunjuk pada suatu node maka kosong
int isEmpty()
{
if (head == NULL) return 1;
else return 0;
}
Penambahan node baru akan dikaitan di node paling depan, namun pada
saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan
cara: node head ditunjukkan ke node baru tersebut. Prinsipnya adalah mengkaitkan
node baru dengan head, kemudian head akan menunjuk pada data baru tersebut
menggunakan C++ :
bantu untuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node baru.
Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk
oleh pointer, maka harus dilakukan penggunakan suatu pointer lain (hapus) yang
digunakan untuk menunjuk node yang akan dihapus, barulah kemudian menghapus
dihapus, terlebih dahulu head harus menunjuk ke node berikutnya agar list tidak
putus, sehingga node setelah head lama akan menjadi head baru. Jika head masih
NULL maka berarti data masih kosong!. Berikut contoh listing menghapus node
menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node sebelum
node yang dihapus yang akan menjadi node terakhir. Pointer bantu digunakan untuk
menunjuk ke nilai NULL. Pointer bantu selalu bergerak sampai sebelum node yang
akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya
pointer hapus akan dihapus, pointer bantu akan menunjuk ke NULL. Berikut ini
void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu; bantu
= bantu->next; delete
hapus;
}
head = NULL;
}
Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran
dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi
tanda awal list tidak boleh berubah/berganti posisi. Penelusuran dilakukan terus
sampai ditemukan node terakhir yang menunjuk ke nilai NULL. Jika tidak NULL, maka
node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan
menggunakan field next sehingga dapat saling berkait. Jika head masih NULL berarti
data masih kosong!. Berikut ini contoh listing dengan menggunakan C++ untuk
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
printf(“\n”);
} else printf(“Masih kosong\n“);
Dibutuhkan dua variabel pointer : head dan tail. Head selalu menunjuk pada
node pertama, sedangkan tail selalu menunjuk pada node terakhir. Kelebihan dari
Single Linked List dengan Head & Tail adalah pada penambahan data di belakang,
hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan
void init(){
head = NULL;
tail = NULL;
}
int isEmpty(){
else return 0;
Ilustrasi penambahan node didepan dengan head dan tail sebagai berikut :
Gambar 5. 14 Ilustrasi penambahan node didepan dengan head dan tail
Ilustrasi penambahan node dibelakang dengan head dan tail sebagai berikut :
Gambar 5. 15 Ilustrasi penambahan node dibelakang dengan head dan tail
Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk
oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan pointer
sehingga data setelah head menjadi head baru, kemudian menghapus pointer hapus
dengan menggunakan perintah delete. Jika tail masih NULL maka berarti list masih
kosong!. Berikut contoh listing dengan menggunakan C++ untuk mengahous Node di
Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk
oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variable
hapus pada tail. Jika tail masih NULL maka berarti list masih kosong! Dibutuhkan
pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai
sebelum tail, sehingga tail dapat ditunjukkan ke bantu, dan bantu tersebut akan
menjadi tail yang baru. Setelah itu hapus pointer hapus dengan menggunakan
perintah delete. Berikut contoh listing dengan menggunakan C++ untuk mengahpus
berikut:
menghapus semua elemen yang berada didalam linked list dengan head dan
tail:
void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu; bantu
= bantu->next; delete
hapus;
}
head = NULL; tail
= NULL;
}