SISTEM BILANGAN DAN SANDI 1. Pendahuluan Sistem bilangan yang biasa kita pakai sehari-hari disebut bilangan berbasis posisi. Bilangan desimal disebut sistem basis 10 (base 10 system), karena sistem ini mempunyai 10 simbol yang berbeda yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Kemudian sistem basis 10 juga dikatakan mempunyai suatu radiks (radix) 10. Jadi radiks dan basis merupakan istilah yang mempunyai arti persis sama. Sedangkan pada bilangan biner disebut dengan bilangan radix 2, dimana bilangan biner hanya memiliki angka 0 dan 1. Untuk bit paling kanan pada bilangan biner disebut LSB (Least Significant Bit) dan bit paling kiri disebut MSB (Most Significant Bit). 2. Sistem Bilangan 2.1. Bilangan biner Pencacahan dalam biner, seperti tabel 2.1. Dimana bilangan biner diperlihatkan pada kolom sebelah kanan dari tabel, sedangkan ekivalen desimalnya diperlihatkan pada kolom sebelah kiri. Perhatikan bahwa angka 1 merupakan bit yang tidak Signifacant (LSB. Least Significant Bit). Dengan kata lain, bila angka 1 muncul pada kolom sebelah kanan, maka hitungan biner ditambah dengan 1. Bagian kedua dari kanan adalah angka 2. Angka 1 yang muncul pada kolom ini berarti bahwa hitungan di tambah dengan 2. Tiga nilai tempat lainnya juga ditunjukkan pada tabel 2.1, dimana masing-masing nilai yang lebih besar merupakan pangkat dari 2 yang ditambahkan. Angka satuan sebenarnya adalah 20, angka duaan adalah 21, Sistem bilangan dan Sandi /hal 1 dari 14 angka empatan adalah 22, angka delapan adalah 23 dan angka enam belasan adalah 24. Pencacah Desimal Pencacah Biner 16 8 4 2 1 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 0 3 0 0 0 1 1 4 0 0 1 0 0 5 0 0 1 0 1 6 0 0 1 1 0 7 0 0 1 1 1 8 0 1 0 0 0 9 0 1 0 0 1 10 0 1 0 1 0 11 0 1 0 1 1 12 0 1 1 0 0 13 0 1 1 0 1 14 0 1 1 1 0 15 0 1 1 1 1 16 1 0 0 0 0 Tabel. 2.1 Pencacahan dalam biner dan desimal Sistem bilangan dan Sandi /hal 2 dari 14 2.2. Konversi Desimal ke Biner Ubahlah bilangan desimal 87 ke bilangan biner. Gambar 2.1, akan menunjukkan cara atau metoda yang mudah untuk proses pengubahan tersebut. Mula-mula bilangan desimal 87 dibagi dengan 2, menghasilkan 43 dengan sisa 1. Sisa ini adalah penting dan dicatat pada sebelah kanan. Pada bilangan biner, sisa ini menjadi LSB. Setelah itu hasil bagi (43) dipindahkan yang ditunjukkan oleh anak panah dan menjadi bilangan yang dibagi. Hasilnya ini dibagi 2 secara berulang-ulang sampai hasil bagi menjadi 0 dengan sisa 1, seperti baris terakhir pada gambar. Jadi desimal 87 sama dengan biner 1010111. 8710 : 2 = 43 sisa 1 43 : 2 = 21 sisa 1 21 : 2 = 10 sisa 1 10 : 2 = 5 sisa 0 5 :2 =2 sisa 1 2 :2 =1 sisa 0 1 :2 =0 sisa 1 8710 =1 0 1 0 1 1 1 Gambar. 2.1 Pengubahan desimal menjadi biner Bagaimana dengan pengubahan bilangan pecahan ? Ubahlah bilangan desimal 0,375 ke bilangan biner. Gambar 2.2 menunjukkan cara untuk proses pengubahan ini, dimana bilangan desimal o,375 dikalikan dengan 2 hasil kalinya 0,75. Angka 0 dari bilangan bulat (angka satuan) menjadi bit yang paling dekat dengan titik biner. Kemudian 0,75 dikalikan dengan 2 hasilnya adalah 21,50. 1 bilangan bulat (angka satuan) merupakan bit berikutnya dalam bilangan biner tersebut. Selanjutnya 0,50 ini dikalikan dengan 2 dan menghasilkan 1,00. 1 pada angka bilangan bulat ini merupakan angka 1 terakhir dalam bilangan dalam bilangan biner tersebut. Bila hasil kali adalah 1, maka proses pengubahan telah selesai. Jadi 0.37510 = 0,0112 Sistem bilangan dan Sandi /hal 3 dari 14 0,375 x 2 = 0,75 0,75 x 2 = 1,50 1,50 x 2 = 1,00 0,37510 =.0 1 12 Gambar. 2.2 Pengubahan pecahan desimal menjadi biner pecahan 2.3. Konversi Biner ke Desimal Ubahlah bilangan biner 1110,101 ke bentuk desimal. Nilai tempat diberikan sepanjang baris sebelah atas. Perlu kita perhatikan nilai setiap posisi disebelah kanan titik biner. Tata cara untuk mengubah bilangan biner pecahan sama dengan pada bilangan bulat. Nilai tempat dari setiap bit pada bilangan biner ditambahkan satu sama lain untuk menghasilkan bilangan desimal. Pada soal ini, 8 + 4 + 2 + 0,5 + 0,124 = 14,625 dalam desimal. Gambar 2.3 memperlihatkan cara atau proses pengubahan dari biner ke desimal. Pangkat dari 2 23 22 21 20 ½1 Nilai tempat 8 4 2 1 0,5 1 1 0 . 1 ½2 ½3 0,25 0,125 Biner = 1 0 1 Desimal = 8 + 4 + 2 + 1 + 0,5 + 0,125 = 14,625 Gambar 2.3 Pengubahan biner menjadi desimal 2.4. Bilangan heksadesimal Sistem bilangan heksadesimal mempunyai radiks 16 dan disebut sebagai sistem bilangan basis 16. Bilangan heksadesimal menggunakan simbol 0-9, A, B, C, D, E, dan F sebagaimana yang ditunjukkan pada kolom heksadesimaldari tabel pada Gambar 1-12. Huruf A adalah untuk cacahan 10, B untuk 11, C untuk 12, D untuk 13, E untuk 14, dan F untuk 15. Keuntungan dari sistem heksadesimal adalah Sistem bilangan dan Sandi /hal 4 dari 14 kegunaannya dalam pengubahan secara langsung dari bilangan biner 4-bit. Perhatikan dalam pengubahan secara langsung dari bilangan biner 4-bit. Desimal Biner Heksadesimal Desimal Biner Heksadesi mal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 8 9 A B C D E F 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Gambar 2.4. Pencacahan dalam sistem bilangan desimal, biner, dan heksadesimal Lihatlah baris yang diberi label 16 pada kolom desimal dalam Gambar 2.4. Ekivalen heksadesimalnya adalah 10. Hal ini menunjukkan bahwa sistem bilangan heksadesimal menggunakan gagasan nilai tempat. Angka 1 (dalam 1016) mempunyai nilai 16 satuan, sedangkan angka 0 bernilai nol unit. 2.4. Konversi Desimal ke Heksadesimal Ubahlah bilangan desimal 45 ke ekivalen-heksadesimalnya. Gambar 2.5a merinci proses pembagian dengan 16 yang kita kenal. Mula-mula bilangan desimal 45 dibagi dengan 16, dan menghasilkan 2 dengan sisa 13. Sisa 13 (D dalam heksadesimal) ini menjadi LSD dari bilangan heksadesimal terdekat. Hasil bagi (2) dipindahkan ke posisi bilangan yang dibagi dan kemudian dibagi dengan 16. Ini menghasilkan 0 dengan sisa 2. Angka 2 ini menjadi digit berikutnya dalam bilangan heksadesimal tersebut. Proses telah selesai karena bagian bilangan bulat dari hasil Sistem bilangan dan Sandi /hal 5 dari 14 bagi adalah 0. Proses pada Gambar 1-9a tersebut mengubah bilangan desimal 45 menjadi angka heksadesimal 2D. Ubahlah angka desimal 250,25 ke angka heksadesimal. Pengubahan ini harus dikerjakan dengan menggunakan dua proses seperti yang ditunjukkan pada Gambar. 2.5b. Bagian bilangan bulat dari bilangan desimal (250) diubah menjadi heksadesimal dengan menggunakan proses pembagian denga-16 yang berulang. Sisa 10 (A dalam heksadesimal) dan sisa 15 (F dalam heksadesimal) membentuk bilangan bulat heksadesimal FA. Bagian pecahan dari 250,25 dikalikan dengan 16(0,25 x 16), hasilnya adalah 4,00. 45 : 16 = 2 sisa 13 2 sisa 2 : 16 = 0 4510 = 2 D16 (a) Pengubahan desimal menjadi heksadesimal. 250 : 16 = 15 sisa 10 15 sisa 15 : 16 = 0 250,2510 = F A 416 0,25 x 16 = 4,00 0,00 x 16 = 0,00 (b) Pengubahan pecahan desimal menjadi heksadesimal. Gambar. 2.5 Konversi desimal ke heksadesimal Bilangan bulat 4 ini dipindahkan ke posisi seperti yang ditunjukkan pada gambar 2.5b. Pengubahan yang telah disebutkan tersebut menunjukkan bilangan desimal 250,25 sama dengan bilangan heksadesimal FA,4. Sistem bilangan dan Sandi /hal 6 dari 14 2.5. Konversi Heksadesimal ke Desimal Ubahlah bilangan heksadesimal 2B6 ke bilangan desimal. Gambar 2.6 menunjukkan proses yang telah kita kenal. Angka 2 terdapat pada posisi 256-an sehingga 2 x 256 = 512, yang tertulis pada baris desimal. Digit heksadesimal B muncul pada kolom 16-an. Heksadesimal B bersesuaian dengan desimal 11. Ini berarti bahwa terdapat sebelum angka 16-an (16x11), yang menghasilkan 176. Bilangan 176 ini di tambahkan pada jumlah desimal di bagian bawah pada Gambar 2.6.a Kolom 1 menunjukkan enam satuan. Kemudian 6 kini ditambahkan pada baris desimal. Nilai-nilai desimal tersebut ditambahkan (512 +176 + 6 = 694) dan menghasilkan 69410. Gambar 2.6.a menunjukkan bahwa 2B616 sama dengan 69410. Pangkat dari 16 162 161 160 Nilai tempat 256-an 16-an 1-an Bilangan heksadesimal 2 B 6 256 16 1 x2 x 11 x6 512 + 176 6 = 69410 Gambar 2.6a. Pengubahan heksadesimal menjadi desimal Ubahlah bilangan desimal heksadesimal A3F.C ke ekivalen-desimalnya. Gambar 2.6b merinci soal ini. Mula-mula tinjau kolom 256-an. Digit heksadesimal A berarti bahwa 256 harus dikalikan dengan 10 dan menghasilkan 2560. Bilangan desimal itu menunjukkan bahwa bilangan tersebut mengandung tiga 16-an, dan oleh karena itu 16 x 3 = 48, yang ditambahkan pada baris desimal. Kolom 1 berisi digit heksadesimal F, yang berarti 1 x 15 = 15. Angka 15 ini ditambahkan pada baris desimal. Kolom 0,0625-an berisi digit heksadesimal C, yang berarti 12 x 0,0625 = 0,75. Selanjutnya 0,75 ini ditambahkan pada baris desimal. Penambahan seluruh isi Sistem bilangan dan Sandi /hal 7 dari 14 baris desimal tersebut (2560 + 48 + 15 + 0,75 = 2623,75) menghasilkan bilangan desimal 2623,75. Gambar2.6b mengubah A3F.C16 menjadi 2623.7510. Pangkat dari 16 162 161 160 1/161 Nilai tempat 256-an 16-an 1-an 0,625-an Bilangan heksadesimal A 3 256 16 1 0,625 x10 x3 x15 x 12 2560 + F . 48 + C 15 + 0,75 = 2637,7510. 2.6.b Pengubahan pecahan heksadesimal menjadi desimal 2.4.3. Konversi Biner ke Heksadesimal 1010 1000 0101 = 1010100001012 = A8516 A 8 5 a. Pengubahan biner ke heksadesimal 0001 0010 . 0110 1100 = 10010,0110112 = 12,6C16 1 2 6 C b. Pengubahan pecahan biner ke heksadesimal 2.7. Konversi biner ke heksadesimal Pada gambar 2.7a. Angka biner 1010100001012 yang sedang dikonversikan menjadi heksadesimal. Mula-mula kita bagi angka biner tersebut menjadi kelompokkelompok 4 bit yang dimulai pada titik biner. Kemudian setiap kelompok dari empat Sistem bilangan dan Sandi /hal 8 dari 14 bit ini di terjemahkan menjadi digit ekivalen heksadesimal. Jadi biner 101010000101 sama dengan heksadesimal A85. Pengubahan biner menjadi heksadesimal yang lain dituliskan pada gambar 2.7b. Disini biner 10010.011011 akan diterjemahkan menjadi heksadesimal. Mulai dari titik biner, bilangan biner tersebut mula-mula dibagi menjadi kelompokkelompok yang terdiri atas empat bit. Tiga angka 0 ditambahkan pada kelompok yang paling kiri dan membentuk 0001. Dua angka 0 ditambahkan pada kelompok yang paling kanan dan membentuk 1100. Sekarang kelompok mempunyai empat bit dan diubah menjadi digit heksadesimal seperti yang ditunjukkan pada gambar 2.7b. Bilangan biner 1010.011011 sama dengan 12,6C16. 2.7. Sandi BCD Sandi atau kode BCD ( binary coded desimal atau desimal terkode biner) membuat pengubahan menjadi desimal jauh lebih mudah. Gambar. 2.8 menunjukkan kode BCD 4-bit untuk digit desimal 0-9. BCD Desimal 8-an 0 0 0 0 0 0 0 0 1 1 0 1 2 3 4 5 6 7 8 9 4-an 0 0 0 0 1 1 1 1 0 0 2-an 0 0 1 1 0 0 1 1 0 0 1-an 0 1 0 1 0 1 0 1 0 1 Gambar.2.8 Kode BCD 8421 Perhatikan bahwa kode BCD merupakan suatu kode berbobot. Bit paling Signifikan mempunyai bobot 8, sedangkan bit yang paling tidak signifikan hanya mempunyai bobot 1. Kode ini lebih tepat dikenal sebagai kode BCD 8421. Bagian 8421 dari nama tersebut menunjukkan pembobotan dari masing-masing angka pada kode 4-bit. Terdapat beberapa kode BCD lain yang mempunyai bobot yang berbeda untuk keempat nilai angka tersebut. Karena kode BCD 8421 adalah yang paling populer, maka kita bisa mengacu pada kode ini sebagai kode BCD saja. Sistem bilangan dan Sandi /hal 9 dari 14 Bagaimana bilangan desimal 150 dinyatakan sebagai bilangan BCD ? Gambar 2.9a menunjukkan teknik yang sangat sederhana untuk mengubah bilangan desimal menjadi bilangan BCD (8421). Setiap digit desimal diubah menjadi ekivalen-BCD 4-bit. Dengan demikian bilangan desimal 150 sama dengan bilangan BCD 000101010000. Desimal BCD 1 5 0 0001 0101 0000 (a) Pengubahan desimal menjadi BCD BCD 1001 0110 Desimal 9 6 (b) Pengubahan BCD menjadi desimal Desimal BCD 3 2 8 0011 0010 1000 4 0100 (c) Pengubahan desimal menjadi pecahan BCD BCD Desimal 0111 0001 7 1 0000 1000 0 8 (d) Pengubahan BCD menjadi pecahan desimal Pengubahan bilangan BCD menjadi bilangan desimal juga cukup sederhana. Gambar.2.9b menunjukkan teknik tersebut.mula-mila bilangan BCD 10010110 dibagi menjadi beberapa kelompok 4-bit yang dimulai pada titik biner. Kemudian setiap kelompok 4-bit diubah menjadi digit desimal-ekivalennya, yang selanjutnya dicatat dibawah. Jadi bilangan BCD 10010110 sama dengan dengan 96 desimal. Sistem bilangan dan Sandi /hal 10 dari 14 Gambar 2.9c melukiskan bilangan desimal pecahan yang sedang diubah menjadi ekivalen-BCD-nya. Setiap digit desimal diubah menjadi ekivalen-BCD-nya. Titik desimal dikeluarkan dan menjadi titik biner. Gambar 2.9c menunjukkan bahwa 32,84 desimal sama dengan bilangan BCD 00110010.10000100. Ubah bilangan BCD pecahan 01110001.000010000 menjadi ekivalendesimalnya. Gambr 2.9d menunjukkan prosedur tersebut. Mula-mula, bilangan BCD dibagi menjadi beberapa kelompok 4-bit yang dimulai pada titik biner. Setiap kelompok 4-bit ini kemudian diubah menjadi ekivalen-desimalnya. Titik biner menjadi titik desimal dalam bilangan desimal. Gambar 2.9d menunjukkan bilangan BCD 01110001.00001000 yang diterjemahkan menjadi ekivalen-desimal sebesar 71,08. Pertimbangkan pengubahan bilangan BCD menjadi ekivalen-binernya. Gambar 2.10 menunjukkan prosedur tiga langkah. Langkah 1 menunjukkan bilangan BCD yang dibagi menjadi beberapa kelompok 4-bit yang dimulai dari titik biner. Setiap kelompok 4-bit diterjemahkan menjadi ekivalen-desimalnya. Langkah 1 pada Gambar 2.10 menunjukkan bilangan BCD 000100000011.0101 yang diterjemahkan menjadi bilangan desimal 103,5. Langkah 2 pada Gambar 2.10 menunjukkan bagian bilangan bulat dari bilangan desimal yang diterjemahkan menjadi bilangan biner. Pada langkah 2, angka 10310 diubah menjadi 11001112 dengan prosedur pembagian dengan-2 yang berulang. Kemudian, bagian bilangan bulat dan pecahan dari bilangan biner tersebut digabungkan. Jadi bilangan BCD 000100000011.0101 sama dengan bilangan biner 1100111.1. Perhatikan bahwa penulisan bilangan biner biasanya lebih efisien dari pada bilangan BCD. Biasanya, bilangan biner terdiri atas 1 dan 0 dalam jumlah yang lebih sedikit seperti terlihat pada pengubahan pada Gambarr 2.10. Meskipun lebih panjang, bilangan BCD digunakan dalam sistem digital. Hal ini untuk mempermudahkan pengubahan ke bilangan desimal. Marilah kita ubah bilangan biner 10001010.101 ke ekivalen BCD (8421). Prosedur ini diuraikan pada Gambar 2.11. Mula-mula, bilangan biner tersebut diubah ke ekivalen-desimalnya. Bilangan biner 10001010.101 sama dengan 138.62510. Kemudian masing-masing digit desimal diubah menjadi ekivalen BCD. Gambar 2.11 melukiskan desimal 138,625 yang diubah menjadi bilangan BCD 0001 0011 Sistem bilangan dan Sandi /hal 11 dari 14 1000.0110 0010 0101. Selanjutnya, keseluruhan konversi tersebut mengubah biner 10001010.1012 menjadi bilangan 0001 0011 1000 .0110 0010 0101. 2.7. SANDI ASCII ASCII singkatan dari American Standad Code for Information Interchange, dikembangkan oleh ANSI (American National Standard Institute) untuk tujuan membuat kode biner yang standar. Kode ini mungkin merupakan kode yang paling banyak digunakan diseluruh dunia untuk aplikasi komputer serta komunikasi data. Kode ASCII yang standar menggunakan kombinasi 7 bit, dengan kombinasi kode sebanyak 127 dari 128 (27 = 128) kemungkinan kombinasi, yaitu : 26 buah huruf kapital (uppercase) dari A s/d Z. 26 huruf kecil (lower case) dari a s/d z 10 dijit desimal dari 0 s/d 9 34 karakter kontrol yang tidak dapat dicetak hanya digunakan untuk informasi status operasi komputer. 32 karakter khusus (special charakter) Data-data dalam komputer akan disimpan dalam memori yang biasanya mempunyai satuan tempat penyimpanan dalam orde byte (8 bit). Jika kita menggunakan ASCII 7 bit, maka ada satu bit pada setiap lokasi memori yang tidak digunakan. Untuk memanfaatkan 1 bit tersebut, biasanya data dalam komputer dinyatakan dalam 1 byte sehingga mempunyai 256 buah kombinasi. Bilangan 0 sampai dengan 127 menyatakan kode ASCII standar, sedangkan 128 sampai dengan 255 biasa digunakan untuk karakter grafik. Tabel sandi ASCII b6b5b4 (column) Row 000 001 010 011 100 101 110 111 B3b2b1 0000 (Hex) 0 0 NUL 1 DLE 2 SP 3 0 4 @ 5 P 6 ` 7 p 0001 1 SOH DC1 ! 1 A Q a q 0010 2 STX DC2 “ 2 B R b r 0011 3 ETX DC3 # 3 C S c s Sistem bilangan dan Sandi /hal 12 dari 14 0100 4 EOT DC4 $ 4 D T d t 0101 5 ENQ NAK % 5 E U e u 0110 6 ACK SYN & 6 F V f v 0111 7 BEL ETB ‘ 7 G W g w 1000 8 BS CAN ( 8 H X h x 1001 9 HT EM ) 9 I Y i y 1010 A LF SUB * : J Z j z 1011 B VT ESC + ; K [ k { 1100 C FF FS ‘ < L \ l | 1101 D CR GS - = M ] m } 1110 E SO RS . > N ^ n ~ 1111 F SI US / ? O _ o DEL Control Codes NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI SP Nul Start of heading Start of text End of text End of transmission Engquiry Acknowledge Beil Backspace Horizontal tab Line feed Vertical tab Form feed Carriage return Shift out Shift in Space Sistem bilangan dan Sandi /hal 13 dari 14 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US DEL Data link escape Device control 1 Device control 2 Device control 3 Device control 4 Negative aknowledge Synchronize End transmitted block Cancel End of medium Substitute Escape File separator Group separator Record separator Unit separator Delete or rubout 3. Contoh-contoh soal dan pembahasan 1. Ubahlah angka desimal 5,625 menjadi biner Jawab : 5 : 2 = 2 sisa 1 2 : 2 = 1 sisa 0 1 : 2 = 0 sisa 1 5,62510 = 1 0 1 . 1 0 1 2 0,625 x 2 = 1,25 0,25 x 2 = 0,50 0,50 x 2 = 1,00 2. Buatlah daftar keenam belas simbol yang digunakan dalam sistem bilangan heksadesimal. Jawab : Keenam belas simbol yang digunakan adalah : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C , D, E, dan F. 3. Ubahlah bilangan heksadesimal D3,E menjadi desimal Jawab : Bilangan heksadesimal D3,E D 3 16 1 0,625 x 13 x3 x 14 198 + 3 + E 0,875 Sistem bilangan dan Sandi /hal 14 dari 14 = 211,87510