Senin, 30 April 2012

Algoritma & Pemogramman

pengertian tree / pohon
DEFINISI TREE / POHON . Tree bisa didefinisikan sebagai suatu kumpulan elemen salah satu elemennya disebut dengan akar (root), dan sisa elemen lainnya (yang disebut simpul) terpecah menjadi sejumlah himpunan yang paling tidak berhubungan satu sama lain, yang disebut dengan subpohon ( subtree), atau disebut juga cabang. Jika kita melihat pada subpohon, maka subpohon inipun juga mempunyai akar dan sub-subpohonnya masing-masing. Dalam kehidupan sehari-hari, tree dapat dilihat dari pohon silsilah keluarga. Tingkat yang tertinggi disebut juga sebagai root. Untuk lebih jelasnya lihat gambar 6.1 merupakan contoh dari sebuah tree.

Gambar 6.1 Contoh Tree dengan 15 simpul Jika kita memperhatikan gambar ditas, sebenarnya yang disebut dengan simpul (node atau vertex) adalah elemen pohon yang berisi informasi / data dan petunjuk percabangan. Pada pohon diatas memiliki 15 simpul yang berisi informasi berupa huruf A, B, C, D sampai O lengkap dengan percabangannya. Akar / Root dari pohon diatas berisi huruf A. Tingkat (level) suatu simpul ditentukan dengan pertama kali menentukan akar sebagai bertingkat 1. jika suatu simpul dinyatakan sebagai tingkat N, maka simpul-simpul yang merupakan anaknya dikatakan berada dalam tingkat N+1. pada p ohon diatas merupakan tree dengan 5 level. Selain tingkat, dikenal juga istilah derajad (degree) dari suatu simpul. Derajad suatu simpul dinyatakan sebagai banyaknya anak atau turunan dari simpul tersebut. Contoh, dari gambar 6.1 simpul A mempunyai derajad 2, simpul B mempunyai derajad 2, simpul C berderajad 3. simpul-simpul F, H, I, J, K, L, N, O yang semuanya berderajad nol, disebut dengan daun (leaf).


Gambar 6.2 Simpul-simpul yang disebut daun Tinggi (Height) atau Kedalaman (Depth) dari suatu pohon adalah tingkat maksimum dari suatu pohon dikurangi dengan satu. Dengan demikian pohon diatas mempunyai tinggi atau kedalaman sama dengan 4. Hutan (Forest) adalah kumpulan sejumlah pohon yang tidak saling berhubungan. Dari gambar diatas jika kita menghapus simpul A maka akan terbentuk sebuah hutan. Pohon Biner (Binary Tree) Pohon biner bisa didefinisikan sebagai suatu kumpulan simpul yang mungkin kosong atau mempunyai akar dan dua subpohon yang saling terpisah yang disebut dengan subpohon kiri dan sub pohon kanan. Subpohon disebut juga sebagai cabang. Karakteristik dari pohon biner ialah bahwa setiap simpul paling banyak hanya mempunyai dua buah anak. Dengan kata lain derajat tertinggi dari sebuah pohon biner adalah dua. Pengertian daun, root, level, tinggi dan derajad yang berlaku pada pohon juga berlaku pada binary tree. Penyajian binary tree pada komputer di gunakan double link list. Deklarasi Pohon Setiap simpul pada pohon biner selalu berisi dua buah pointer yang menunjuk ke cabang kiri dan cabang kanan dengan melihat hal tersebut maka struktur double link list sangat cocok untuk di terapkan di dalam tree ini. Gambar Membuat Pohon Biner Untuk membuat pohon biner, terdapat aturan dalam penempatan simpulnya. Berikut ini merupakan algoritma penempatan sebuah simpul dalam pohon biner : “Simpul yang berisi informasi yang nilainya lebih besar dari simpul diatasnya akan ditempatkan sebagai cabang kanan dan jika lebih kecil akan ditempatkan di cabang kiri.” Proses untuk memperoleh pohon biner diatas adalah sebagai berikut : Karakter pertama ‘H’ ditempatkan sebagai Akar. Karakter ‘K’ karena lebih besar dari ‘H’ diletakkan dicabang kanan. Karakter ‘A’ karena lebih kecil dari ‘H’ akan menempati cabang kiri dari ‘H’. kemudian, karena karakter ‘C’ lebih kecil dari ‘H’ dan lebih besar dari ‘A’ maka ia di letakkan sebagai cabang kanan dari ‘A’. demikian seterusnya sampai semua masukkan di proses. Untuk mengalokasikan simpul baru seperti diatas biasanya digunakan fungsi rekursif, untuk itu ada baiknya jika kita membuat fungsi baru agar proses rekursif untuk simpul dapat berlangsung sukses. Kunjungan Pada Pohon Biner Sebuah pohon biner memiliki operasi traversal yaitu suatu kunjungan pada suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap kita akan memperoleh urutan informasi secara linier yang tersinpan di dalam pohon biner. Terdapat tiga jenis kunjungan pada pohon biner, yaitu : 1. PREORDER Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut : - Cetak isi simpul yang dikunjungi. - Kunjungi cabang kiri. - Kunjungi cabang kanan. Dari gambar 6.4 jika kita melakukan traversal secara PREORDER pada pohon biner tersebut maka akan menghasilkan untai : ‘HACBKJL’. 2. INORDER Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut : - Kunjungi cabang kiri. - Cetak isi simpul yang dikunjungi. - Kunjungi cabang kanan. Dari gambar 6.4 jika kita melakukan traversal secara INORDER pada pohon biner tersebut maka akan menghasilkan untai : ‘ABCHJKL’. 3. POSTORDER Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut : - Kunjungi cabang kiri. - Kunjungi cabang kanan. - Cetak isi simpul yang dikunjungi. Dari gambar 6.4 jika kita melakukan travarsal secara POSTORDER pada pohon biner tersebut maka akan menghasilkan untai : ‘BCAJLKH’.


pengertian queve

Queue = Antrian Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya FIFO (first in first out) DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian deklarasi #define MAX 8 typedef struct{ int data[MAX]; int head; int tail; } Queue; Queue antrian; OPERASI-OPERASI PADA QUEUE - Create() o Untuk menciptakan dan menginisialisasi Queue o Dengan cara membuat Head dan Tail = -1 IsEmpty() o Untuk memeriksa apakah Antrian sudah penuh atau belum o Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty o Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubahubah o Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail IsFull() o Untuk mengecek apakah Antrian sudah penuh atau belum o Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array C) berarti sudah penuh Dequeue() o Digunakan untuk menghapus elemen terdepan/pertama dari Antrian o Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. o Penggeseran dilakukan dengan menggunakan looping

DEFINISI STACK

- Stack atau tumpukan - Bersifat LIFO (Last In First Out) - Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack - Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaituCompo juga. Operasi-operasi/fungsi Stack Push : digunakan untuk menambah item pada stack pada tumpukan paling atas Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas Clear : digunakan untuk mengosongkan stack IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah Penuh Deklarasi STACK dengan struct dan array data typedef struct STACK{ int top; char data[10][10]; //misalkan : data adalah array of string //berjumlah 10 data, masing-masing string //menampung maksimal 10 karakter }; Deklarasi/buat variabel dari struct STACK tumpuk; Inisialisasi Stack - Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG! - Top adalah suatu variabel dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH! - Ilustrasi stack pada saat inisialisasi: Fungsi IsFull - Untuk memeriksa apakah stack sudah penuh? - Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full - Ilustrasi: Fungsi Push - Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack - Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudianisikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)


DEFINISI LIST

ListView dalam Visual Basic biasanya digunakan untuk menampilkan data, baik dari database maupun bukan, ke dalam tabel dalam bentuk list atau grid. Dengan listview, data yang ada dapat diurutkan, ditambahkan maupun dihapus dengan mudah dari list. Untuk mengatur header listview, perhatikan contoh berikut ini : Dim ch As ColumnHeader Set ch = ListView1.ColumnHeaders.Add(, , "No.", 600) Set ch = ListView1.ColumnHeaders.Add(, , "Kode", 900, vbCenter) Set ch = ListView1.ColumnHeaders.Add(, , "Nama Barang", 2300, vbLeftJustify) Set ch = ListView1.ColumnHeaders.Add(, , "Byk", 900, vbCenter) Set ch = ListView1.ColumnHeaders.Add(, , "Harga Satuan", 1500, vbRightJustify) Set ch = ListView1.ColumnHeaders.Add(, , "Jumlah", 1580, vbRightJustify) ListView1.GridLines = True .


DEFINISI ARRAY

Array adalah tipe data yang banyak dipergunakan pada hampi di semua bahasa pemrograman. Array bisa disebut sebagai penempatan banyak data pada satu variable. Hal ini diperlukan apabila data yang kita butuhkan jumlahnya banyak, dan data tersebut adalah serupa, misalnya data nilai siswa. Misalnya adalah sebagai berikut: int NilaiSiswa1 = 60; int NilaiSiswa2 = 70; int NilaiSiswa3 = 80; Apabila datanya berjumlah sedikit mungkin masih bisa menggunakan metode di atas. Tapi apabila datanya banyak(jumlah siswa lebih dari 100), kita akan kesulitan untuk mengaturnya. Kemudian dari hal inilah timbul ide untuk mengganti angka pada variable dengan varable integer (bilangan) sebagai index. Dengan demikian terdapat variable indentitas dan variable index. Sehingga deklarasi di atas dengan array menjadi: int Nilaisiswa[100]={80,65,98,79,70,.......}; arti: NilaiSiswa[1] = 80; NilaiSiswa[2] = 65; NilaiSiswa[3] = 98; dst Dengan demikian penggunaan variable NilaiSiswa akan lebih mudah, karena index juga bisa diganti dengan variable bertipe integer. Biasanya akses dari variable array menggunakan looping. Array juga bisa digunakan untuk data 2 atau 3 dimensi. Sesungguhnya kalimat (string) adalah array dari tipe data karakter (char).

DEFINISI RECORD

Record (rekaman) menyatakan kumpulan dari sejumlah elemen data yang saling terkait. Sebagai contoh, nama, alamat, tanggal lahir, dan jenis kelamin dari seseorang menyusun sebuah record. Istilah lain yang juga menyatakan record yaitu tupel dan baris. contoh struktur data : sebuah record dengan empat buah field Field1 Field2 Field4 Field4 Sintax type nama_record = record identifier_1 : tipe_data_1; : : identifier_n : tipe_data_n; end; var variabel1 : nama_record;

LANGKAH-LANGKAH MEMBUAT PERCABANGAN : IF………ELSE …….END IF

LANGKAH-LANGKAH MEMBUAT PERCABANGAN : IF………ELSE …….END IF 1. Membuka aplikasi visual basic 2008 atau 2010, klik new project, klik windows forms application. 2. Membuat nama UAS dengan menggunakan label pada kotak toolbox. kemudian text pada kotak properties diganti dengan UAS.membuat kotak input nilai UAS dengan textbox, textnya di kosongkan. Nama diganti Tuas. 3. Membuat nama UAN dengan menggunakan label pada kotak toolbox. kemudian text pada kotak properties diganti dengan UAN.membuat kotak input nilai UAN dengan textbox, textnya di kosongkan.nama diganti Tuan. 4. Membuat nama HASIL dengan menggunakan label pada kotak toolbox. kemudian text pada kotak properties diganti dengan HASIL.membuat kotak input nilai HASIL dengan textbox, textnya di kosongkan. Nama diganti Ttotal. Enable diganti false. 5. Membuat nama KETERANGAN dengan menggunakan label pada kotak toolbox. kemudian text pada kotak properties diganti dengan KETERANGAN.membuat kotak input nilai KETERANGAN dengan textbox, textnya di kosongkan. Nama diganti Tket. Enable diganti false 6. Membuat tombol PROSES dengan menggunakan button pada kotak toolbox. Text pada kotak properties diganti PROSES. 7. Membuat tombol EXIT dengan menggunakan button pada kotak toolbox.text pada kotak properties diganti EXIT.

8. Double klik tombol PROSES lalu ketikkan coding seperti berikut : Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Ttotal.Text = Val((Me.Tuas.Text) + Val(Me.Tuan.Text)) / 2 If Ttotal.Text >= 80 And Me.Ttotal.Text <= 100 Then Tket.Text = "A" ElseIf Me.Ttotal.Text >= 65 And Ttotal.Text <= 79 Then Me.Tket.Text = "B" ElseIf Me.Ttotal.Text <= 65 Then Me.Tket.Text = "C" End If End Sub 9. Double klik tombol EXIT lalu ketik codingnya : Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub 10. Double klik textbox1 / Tuas kemudian ketik coding : Private Sub Tuas_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tuas.TextChanged Dim a As Integer a = Val(Tuas.Text) End Sub 11. Double klik textbox2/ Tuan lalu ketik coding : Private Sub Tuan_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tuan.TextChanged Dim b As Integer b = Val(Tuan.Text) End Sub End Class 12. Jalankan program dengan menekan tombol start debugging pada toolbar (F5) 13. Masukkan nilai UAS dan UAN, missalkan UAS = 90 dan UAN = 80 lalu tekan tombol PROSES, maka muncul HASIL = 85 dengan KETERANGAN = A. 14. Untuk keluar dari program klik stop debugging pada toolbar (CTRL+ALT+BREAK)



LANGKAH-LANGKAH PEMBUATAN KONDISI PERULANGAN

WHILE………END WHILE 1. Membuka aplikasi visual basic 2008 atau 2010, klik new project, klik windows forms application. 2. Membuat kotak input nilai dengan memilih textbox pada kotak toolbox. Biarkan pada text di kosongkan. 3. Membuat tombol proses dengan memilih button pada kotak toolbox. pada kotak properties, ganti textnya menjadi proses. Seperti pada kotak dibawah ini :

4. Double klik tombol proses.dan mengetikan codingnya seperti berikut : Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MAX = 10 Dim MIN = 0 While MIN < MAX MIN += 1 MsgBox(MIN) End While End Sub End Class 5. Jalankan program dengan menekan tombol start debugging pada toolbar (F5) 6. Masukkan nilainya,maka akan terjadi looping pada windows application. 7. Untuk menghentikan program, klik stop debugging pada toolbar.

Multi Tasking & Multi Programming

v  MULTI TASKING
(Multitasking) adalah istilah teknologi informasi yang mengacu kepada sebuah metode dimana banyak pekerjaan atau dikenal juga sebagai proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk satu pekerjaan tersebut. Multitasking memecahkan masalah ini dengan memjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan. Kondisi mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch. Ketika context switch terjadi dengan sangat cepat -- kondisi ini cukup untuk memberikan ilusi pengolahan-paralel. Bahkan dalam komputer yang memiliki lebih dari satu CPU (disebut multi-prosesor), multitasking memperbolehkan lebih banyak pekerjaan dijalankan dibanding dengan jumlah CPU yang tersedia.
Sistem operasi komputer dapat juga mengadopsi berbagai macam strategi penjadwalan, yang secara garis besar dapat dikategorikan sebagai berikut:
  • Dalam sistem multi-program, pekerjaan yang sedang diolah terus berjalan hingga membutuhkan suatu operasi yang memerlukan interaksi dari luar. (e.g. membaca dari tape). Sistem multi-program didesain untuk memaksimalkan penggunaan CPU.
  • Dalam sistem time-sharing , pekerjaan yang sedang diolah diharuskan melepaskan kerja CPU, baik secara sukarela atau dari interaksi luar, seperti interupsi-perangkat-keras. Sistem Time-sharing didesain untuk memperbolehkan beberapa program seolah diproses secara bersamaan.
  • Dalam sistem real-time, beberapa program yang sedang menunggu dijamin untuk mendapatkan pengolahan dari CPU ketika interaksi luar terjadi. Sistem real-time didesain untuk melakukan kontrol mekanik seperti robot-robot industri, yang memerlukan ketepatan pemrosesan.
Dewasa ini, penggunaan istilah time-sharing jarang digunakan, dan digantikan dengan istilah multitasking.



(Multiprogramming) Melayani banyak program yang tidak ada hubungannya satu sama lain dan dijalankan sekaligus dalam satu komputer yang sama.

Melayani banyak program yang tidak ada hubungannya satu sama lain dan dijalankan sekaligus dalam satu komputer yang sama.
Pelaksanaan instruksi yang diterapkan adalah:
- program dimuat ke dalam
memori,
- program dijalankan sampai
mengakses perangkat I/O,
- berpindah (
switch) ke pekerjaan lain,
- langkah tersebut berulang terus menerus,
- untuk proses perpindahan (switching), dilaksanakan oleh
software


A. Status Proses Dalam Multiprogramming.
Meskipun setiap proses merupakan Entitiy yang berdiri sendiri, dan masing-masing memiliki program Counter dan status internal, beberapa proses sering kali harus berinteraksi dengan proses yang lain. Keluaran dari suatu proses dapat menjadi masukan bagi proses yang lain. Jika proses yang sedang menunggu masukan tidak menemukan masukan yang dikehendaki, proses tersebut diblok sampai masukan tersedia.
Pada saat proses diblok, secara logika proses tersebut tidak dapat dilanjutkan karena menuggu masukan yang belum tersedia. Dapat terjadi bahwa proses yang Ready dan dapat di-run terpaksa harus dihentikan karena sistem operasi arus mengalokasikan CPU ke proses lain untuk sementara waktu.
Proses dapat berada pada status berikut:
1) Submitt:
Proses baru saja dikirimkan oleh user dan masih menunggu untuk dilayani.
2) Running:
Proses benar-benar menggunakan CPU pada saat itu.
3) Ready:
Proses berhenti sementara untuk memberikan kesempatan pada proses lain untuk menggunakan CPU.
4) Blocked:
Proses tidak dapat di-Run sampai terjadi kejadian eksternal yang sesuai (misalkan selesainya operasi input/output atau telah tersedianya data input).
5) Finished:
Proses telah dilaksanakan secara sempurna.
Di antara status Running, Ready dan Blocked, hanya terdapat 4 kemungkinan perubahan status, yaitu:
1) Running ke Blocked:
Terjadi jika proses diblok, karena menunggu masukan atau menunggu selesainya aktivitas I/O.
2) Running ke Ready:
Terjadi jika Process Scheduler menghentikan proses yang sedang running untuk memberikan kesempatan pada proses lain menggunakan CPU.
3) Blocked ke Ready:
Terjadi jika ada kejadian eksternal yang menyebabkan proses dapat dijalankan kembali. Misalnya datangnya input atau selesainya suatu aktifitas I/O.
4) Ready ke Running:
Terjadi jika proses siap untuk menggunakan CPU dan masukan yang sesuai untuk proses tersebut telah tiba.

B. Penjadwalan Proses (CPU) Dalam Multiprogramming.
Penjadwalan CPU berhubungan dengan masalah penentuan proses dalam antrian yang akan diberikan CPU. Terdapat beberapa algoritma penjadwalan yang dapat digunakan, masing-masing dengan sifat-sifat khasnya sendiri. Dalam memilih algoritma yang akan dipakai dapat digunakan bermacam kriteria untuk membandingkan suatu algoritma dengan algoritma yang lain.
Kriteria yang digunakan dalam perbandingan dapat menyebabkan perbedaan dalam penentuan algoritma yang akan dipilih. Kriteria-kriteria tersebut meliputi:

1) Pemanfaatan CPU.
Biaya CPU yang mahal menuntut pemakai untuk selalu memberikan pekerjaan kepada CPU sehingga kalau dimungkinkan maka dibuat kondisi yang sedemikian rupa dimana CPU tidak memiliki waktu luang. Dalam sistem susungguhnya, pemanfaatan CPU berkisar antara 40% sampai 90%.

2) Throughput.
Untuk mengukur beban pekerjaan CPU, salah satu cara adalah dengan menghitung jumlah job yang diselesaikan setiap satuan waktu tertentu, yang disebut Throughput. Untuk job yang lama, kecepatannya mungkin satu job per jam, sedangkan untuk transaksi pendek dapat mencapai 10 job per detik.

3) Turnaround Time.
Dari sudut pandang suatu job, mungkin yang paling penting adalah lamanya waktu penyelesaian job itu. Selang waktu dari saat penyerahan job sampai waktu penyelesaian disebut Turnaround Time, yang meliputi juga waktu tunggu untuk memasuki memori, waktu tunggu di antrian, pengerjaan di CPU, dan pelaksanaan proses I/O.



4) Waiting Time (Waktu Tunggu).
Sebagai alternatif Turnaround Time, dapat digunakan Waktu Tunggu di antrian untuk setiap job. Waktu Tunggu ini tidak termasuk waktu pelaksanaan tugas I/O.

5) Response Time (Waktu Tanggap).
Seringkali suatu proses dapat mengeluarkan hasil yang relatif lebih cepat daripada waktu penyelesaian proses tersebut. Bersamaan dengan pengeluaran itu, proses tersebut dapat melanjutkan perhitungan hasil baru selanjutnya. Waktu yang dihitung sejak mulai dari penyerahan suatu permintaan sampai respons (tanggapan) pertama diperoleh pemakai tersebut Response Time.

Mengubah Bilangan Biner, Desimal, Oktal, Heksadesimal



Pada kesempatan ini, saya ingin coba menjabarkan tahap2 sederhana proses konversi bilangan desimal, biner, oktal dan heksadesimal. pertama x hal yang harus dilakukan, pergi kewarung buat beli rokok, sediakan teh manis/kopi, tarik nafas yg dalam, ambil aba2 untuk melakukan perang dengan angka 0 dan 1

Bilangan desimal adalah bilangan yang menggunakan 10 angka mulai 0 sampai 9 berturut2. Setelah angka 9, maka angka berikutnya adalah 10, 11, 12 dan seterusnya. Bilangan desimal disebut juga bilangan berbasis 10. Contoh penulisan bilangan desimal : 1710. Ingat, desimal berbasis 10, maka angka 10-lah yang menjadi subscript pada penulisan bilangan desimal.

Bilangan biner adalah bilangan yang hanya menggunakan 2 angka, yaitu 0 dan 1. Bilangan biner juga disebut bilangan berbasis 2. Setiap bilangan pada bilangan biner disebut bit, dimana 1 byte = 8 bit.  Contoh penulisan : 1101112.

Bilangan oktal adalah bilangan berbasis 8, yang menggunakan angka 0 sampai 7. Contoh penulisan : 178.
Bilangan heksadesimal, atau bilangan heksa, atau bilangan basis 16, menggunakan 16  buah simbol, mulai dari 0 sampai 9, kemudian dilanjut dari A sampai F. Jadi, angka A sampai F merupakan simbol untuk 10 sampai 15. Contoh penulisan : C516.
Hmm.. Sepertinya prolognya sudah cukup. Lanjut ke proses kalkulasi…

Desimal ke binner
Saya langsung saja ambil sebuah contoh bilangan desimal yang akan dikonversi ke biner. Setelah itu, akan saya lakukan konversi masing2 bilangan desimal, biner, oktal dan heksadesimal.
Misalkan bilangan desimal yang ingin saya konversi adalah 2510.
Maka langkah yang dilakukan adalah membagi tahap demi tahap angka 2510 tersebut dengan 2, seperti berikut :
25 : 2 = 12,5
Jawaban di atas memang benar, tapi bukan tahapan yang kita inginkan. Tahapan yang tepat untuk melakukan proses konversi ini sebagai berikut :
25 : 2 = 12 sisa 1.    —–> Sampai disini masih mengerti kan?
Langkah selanjutnya adalah membagi angka 12 tersebut dengan 2 lagi. Hasilnya sebagai berikut :
12 : 2 = 6 sisa 0.      —–> Ingat, selalu tulis sisanya.
Proses tersebut dilanjutkan sampai angka yang hendak dibagi adalah 0, sebagai berikut :

25 : 2 = 12 sisa 1.
12 : 2 = 6 sisa 0.
6 : 2 = 3 sisa 0.
3 : 2 = 1 sisa 1.
1 : 2 = 0 sisa 1.
0 : 2 = 0 sisa 0…. (end)
Nah, setelah didapat perhitungan tadi, pertanyaan berikutnya adalah, hasil konversinya yang mana? Ya, hasil konversinya adalah urutan seluruh sisa-sisa perhitungan telah diperoleh, dimulai dari bawah ke atas.
Maka hasilnya adalah 0110012. Angka 0 di awal tidak perlu ditulis, sehingga hasilnya menjadi 110012. Sip?

Desimal ke oktal
Lanjut…..sekarang saya akan menjelaskan konversi bilangan desimal ke oktal.
Proses konversinya mirip dengan proses konversi desimal ke biner, hanya saja kali ini pembaginya adalah 8. Misalkan angka yang ingin saya konversi adalah 3310. Maka :
33 : 8 = 4 sisa 1.
4 : 8 = 0 sisa 4.
0 : 8 = 0 sisa 0….(end)
Hasilnya? Coba tebak…418!!!

Desimal ke heksadesimal
Sekarang tiba waktunya untuk mengajarkan proses konversi desimal ke heksadesimal
Seperti biasa, langsung saja ke contoh. Hehe…
Misalkan bilangan desimal yang ingin saya ubah adalah 24310. Untuk menghitung proses konversinya, caranya sama saja dengan proses konversi desimal ke biner, hanya saja kali ini angka pembaginya adalah 16. Maka :
243 : 16 = 15 sisa 3.
15 : 16 = 0 sisa F.      —-> ingat, 15 diganti jadi F..
0 :  16 = 0 sisa 0….(end)
Nah, maka hasil konversinya adalah F316. Mudah, bukan?

Fiuh..Lanjut lagi…
Biner ke desimal
Sekarang kita beralih ke konversi bilangan biner ke desimal. Proses konversi bilangan biner ke bilangan desimal adalah proses perkalian setiap bit pada bilangan biner dengan perpangkatan 2, dimana perpangkatan 2 tersebut berurut dari kanan ke kiri bit bernilai 20 sampai 2n.
Langsung saja saya ambil contoh bilangan yang merupakan hasil perhitungan di atas, yaitu 110012. Misalkan bilangan tersebut saya ubah posisinya mulai dari kanan ke kiri menjadi seperti ini.
1
0
0
1
1
Nah, saatnya mengalikan setiap bit dengan perpangkatan 2. Ingat, perpangkatan 2 tersebut berurut mulai dari 20 sampai 2n, untuk setiap bit mulai dari kanan ke kiri. Maka :
1     ——>    1 x 20 = 1
0     ——>    0 x 21 = 0
0     ——>    0 x 22 = 0
1     ——>    1 x 23 = 8
1     ——>    1 x 24 = 16 —> perhatikan nilai perpangkatan 2 nya semakin ke bawah semakin besar
Maka hasilnya adalah 1 + 0 + 0 + 8 + 16 = 2510.
Nah, bandingkan hasil ini dengan angka desimal yang saya ubah ke biner di awal tadi. Sama bukan?

Biner ke oktal
Sudah ini, sudah itu, sekarang….nah, konversi bilangan biner ke oktal. hehe…siap?
Untuk merubah bilangan biner ke bilangan oktal, perlu diperhatikan bahwa setiap bilangan oktal mewakili 3 bit dari bilangan biner. Maka jika kita memiliki bilangan biner 1101112 yang ingin dikonversi ke bilangan oktal, langkah pertama yang kita lakukan adalah memilah-milah bilangan biner tersebut, setiap bagian 3 bit, mulai dari kanan ke kiri, sehingga menjadi seperti berikut :

110                 dan               111

Sengaja saya buat agak berjarak, supaya lebih mudah dimengerti. Nah, setelah dilakukan proses pemilah2an seperti ini, dilakukan proses konversi ke desimal terlebih dahulu secara terpisah. 110 dikonversi menjadi 6, dan 111 dikonversi menjadi 7. Hasilnya kemudian digabungkan, menjadi 678, yang merupakan bilangan oktal dari 1101112… 

“Tapi, itu kan kebetulan bilangan binernya pas 6 bit. Jadi dipilah2 3 pun masih pas. Gimana kalau bilangan binernya, contohnya, 5 bit?” Hehe…Gampang..Contohnya 110012. 5 bit kan? Sebenarnya pemilah2an itu dimulai dari kanan ke kiri. Jadi hasilnya 11 dan 001. Ini kan sebenarnya sudah bisa masing2 diubah ke dalam bentuk desimal. Tapi kalau mau menambah kenyamanan di mata, tambahin aja 1 angka 0 di depannya. Jadi 0110012. Tidak akan merubah hasil perhitungan kok. Tinggal dipilah2 seperti tadi. Okeh?

Biner ke heksadesimal
Selanjutnya adalah konversi bilangan biner ke heksadesimal.
Hmm…sebagai contoh, misalnya saya ingin ubah 111000102 ke bentuk heksadesimal. Proses konversinya juga tidak begitu rumit, hanya tinggal memilahkan bit2 tersebut menjadi kelompok2 4 bit. Pemilahan dimulai dari kanan ke kiri, sehingga hasilnya sbb :
1110            dan           0010
Nah, coba lihat bit2 tersebut. Konversilah bit2 tersebut ke desimal terlebih dahulu satu persatu, sehingga didapat :
1110 = 14    dan           0010 = 2
Nah, ingat kalau 14 itu dilambangkan apa di heksadesimal? Ya, 14 dilambangkan dengan E16.
Dengan demikian, hasil konversinya adalah E216.

Seperti tadi juga, gimana kalau bilangan binernya tidak berjumlah 8  bit? Contohnya 1101012? Yaa…Seperti tadi juga, tambahin aja 0 di depannya. Tidak akan memberi pengaruh apa2 kok ke hasilnya. Jadi setelah ditambah menjadi 001101012. Selanjutnya, sudah gampang kan?

Oktal ke desimal
Selanjutnya, konversi bilangan oktal ke desimal. Hal ini tidak terlalu sulit. Tinggal kalikan saja setiap bilangan dengan perpangkatan 8. Contoh, bilangan oktal yang akan dikonversi adalah 718. Maka susunannya saya buat menjadi demikian :
1
7
dan proses perkaliannya sbb :
1 x 80 = 1
7 x 81 = 56
Maka hasilnya adalah penjumlahan 1 + 56 = 5710.

Oktal ke biner
Habis konversi oktal ke desimal, maka saat ini giliran oktal ke biner. Hehe..Langsung ke contoh. Misalkan saya ingin mengubah bilangan oktal 578 ke biner. Maka langkah yang saya lakukan adalah melakukan proses konversi setiap bilangan tersebut masing2 ke 3 bit bilangan biner. Nah, angka 5 jika dikonversi ke biner menjadi….? 1012. Sip. Nah, 7, jika dikonversi ke biner menjadi…? 1112. Mantap. Maka hasilnya adalah 1011112. Jamin benar deh….

Oktal ke heksadesimal
Hmm…berarti…sekarang giliran konversi oktal ke heksadesimal.Untuk konversi oktal ke heksadesimal, kita akan membutuhkan perantara, yaitu bilangan biner. Maksudnya? Maksudnya adalah kita konversi dulu oktal ke biner, lalu konversikan nilai biner tersebut ke nilai heksadesimalnya. Nah, baik yang konversi oktal ke biner maupun biner ke heksadesimal kan udah dijelaskan. Coba buktikan, bahwa bilangan oktal 728 jika dikonversi ke heksadesimal menjadi 3A16. Bisa kan? Bisa dong…

Heksadesimal ke desimal
Selanjutnya adalah konversi bilangan heksadesimal ke desimal.Untuk proses konversi ini, caranya sama saja dengan proses konversi biner ke desimal, hanya saja kali ini perpangkatan yang digunakan adalah perpangkatan 16, bukan perpangkatan 2. Sebagai contoh, saya akan melakukan konversi bilangan heksa C816 ke bilangan desimal. Maka saya ubah dulu susunan bilangan heksa tersebut, mulai dari kanan ke kiri, sehingga menjadi sebagai berikut :
8
C
dan kemudian dilakukan proses perkalian dengan perpangkatan 16, sebagai berikut :
8 x 160 = 8
C x 161 = 192     ——> ingat, C16 merupakan lambang dari 1210
Maka diperolehlah hasil konversinya bernilai 8 + 192 = 20010.

Heksadesimal ke biner
Tutorial berikutnya, konversi dari heksadesimal ke biner.
Dalam proses konversi heksadesimal ke biner, setiap simbol dalam heksadesimal mewakili 4 bit dari biner. Misalnya saya ingin melakukan proses konversi bilangan heksa B716 ke bilangan biner. Maka setiap simbol di bilangan heksa tersebut saya konversi terpisah ke biner. Ingat, B16 merupakan simbol untuk angka desimal 1110. Nah, desimal 1110 jika dikonversi ke biner menjadi 10112, sedangkan desimal 710 jika dikonversi ke biner menjadi 01112. Maka bilangan binernya adalah 101101112, atau kalau dibuat ilustrasinya seperti berikut ini :
B                         7       —-> bentuk heksa
11                       7       —-> bentuk desimal
1011                0111  —-> bentuk biner
Hasilnya disatukan, sehingga menjadi 101101112. Understood?


Heksadesimal ke oktal
Last but not least, konversi heksadesimal ke oktal.
Nah, sama seperti konversi oktal ke heksadesimal, kita membutuhkan bantuan bilangan biner. Lakukan terlebih dahulu konversi heksadesimal ke biner, lalu konversikan nilai biner tersebut ke oktal. Sebagai latihan, buktikan bahwa nilai heksadesimal E716 jika dikonversi ke oktal menjadi 3478. Hehe…Kamu bisa!!!