Anda di halaman 1dari 9

INSTITUT TEKNOLOGI INDONESIA JURUSAN TEKNIK INFORMATIKA PRAKTIKUM PENGANTAR INFORMATIKA DENGAN PEMROGRAMAN C++ MODUL 4 SISTIM BILANGAN

HEXADECIMAL Sasaran: * Mempelajari sistim bilangan Hexadecimal * Mempelajari cara merubah bilangan desimal ke Hexadecimal, atau sebaliknya * Mempelajari cara merubah bilangan Hexadecimal ke Biner, atau sebaliknya I. Sistim Bilangan Hexadecimal Sistim bilangan Hexadecimal menggunakan 16 simbol yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,dimana nilai numerik dari A = 10 , B = 11, C=12, D=13, E=14 dan F=15(lihat tabel lampiran I). Karena itu basis dari sistim bilangan ini adalah 16. Sistim bilangan ini sama saja dengan sistim bilangan Desimal, Biner, dan Oktal, hanya dibedakan oleh basisnya saja. Nilai bilangan ditentukan oleh total hasil kali nilai absolut dan nilai tempat(place value). Contoh 1: 21A.15H = 2x162 +1x161 +Ax160 + 1x16-1 + 5x16-2 = 2x256 +1x16 +10x1 + 2x1/16 + 5x1/256 = 512 + 16 + 10+37/256 = 538 37/256D

25

II. Konversi Bilangan Hexadecimal Bilangan Hexadecimal dapat dirubah ke sistim bilangan Desimal, Biner dan Oktal. Begitu juga sebaliknya. II.1. Konversi dari Hexadecimal ke Desimal Algoritma yang digunakan dapat dilihat pada contoh 1. Setiap nilai absolut dikalikan dengan nilai posisi lalu dijumlahkan. Yang harus diperhatikan dalam kasus ini adalah simbol yang digunakan bukan hanya numerik saja tetapi ada simbol yang berbentuk karakter. Operasi aritmatika hanya bisa dilakukan terhadap bilangan bila jenis datanya numerik. Apabila bilangan yang dioperasikan A sampai F maka perlu ada konversi dari karakter ke numerik, sebaliknya bila hasil pengolahan antara 10 sampai 15 juga harus ada konversi dari numerik ke karakter. Perhatikan dan pahami program berikut : //Program Konversi dari bilangan hexadesimal ke desimal # include <iostream.h> # include <conio.h> # include <math.h> void main() { clrscr(); char H[4]; int heksa[4],i; long des=0; //Bagian pemasukan data cout<<"Masukan 4 bilangan HEXA anda="<<endl; for(i=0;i<4;i++) { cin>>H[i];

26

switch (H[i]) { case 'A': heksa[i]=10; break; case 'B' : heksa[i]=11; break; case 'C': heksa[i]=12; break; case 'D': heksa[i]=13; break; case 'E' : heksa[i]=14; break; case 'F': heksa[i]=15; break; case '0': heksa[i]=0; break; case '1' : heksa[i]=1; break; case '2': heksa[i]=2; break; case '3': heksa[i]=3; break; case '4' : heksa[i]=4; break;

27

case '5': heksa[i]=5; break; case '6': heksa[i]=6; break; case '7' : heksa[i]=7; break; case '8': heksa[i]=8; break; case '9': heksa[i]=9; break; default : { cout<<"Bilangan anda bukan Hexadesimal <<, ulangi pemasukan data "<<endl; cin>>H[i]; } } } cout<<endl; //Bagian proses konversi dari hexadesimal ke desimal for(i=0;i<4;i++) des=des+heksa[i]*pow(16,3-i); //Bagian Tampilan hasil cout<<"Bilangan Hexadesimal anda ="; for(i=0;i<4;i++) cout<<H[i]<<" "; cout<<endl; cout<<"Bilangan desimal ="<<des<<endl; getch(); }

28

Simpan program tersebut dengan nama PI4-01 Hasil dari program sebagai berikut :

II.2. Konversi dari Desimal ke Hexadecimal II.2.a. Untuk bilangan bulat tak negatif Ada 2 cara yang dapat digunakan untuk mengkonversi bilangan bulat desimal menjadi bilangan dalam sistim Hexadecimal yaitu : 1. Dengan menggunakan tabel pangkat 16n 2. Pembagian berturut-turut dengan 16 Cara yang dilakukan dalam konversi ini sama dengan cara pengkonversian desimal ke biner, hanya saja yang berbeda basis dari bilangannya (lihat lagi modul 2). II. 2.b. Untuk bilangan pecahan positif 1. Dengan menggunakan tabel pangkat 16-n 2. Perkalian berturut-turut dengan 16 Buatlah program untuk membaca sebuah bilangan bulat positif. Konversikan ke Hexadecimal dengan menggunakan array dimensi satu yang panjangnya 4 (ingat bilangan integer hanya bisa menampung data maksimum 32766). Simpan dengan nama PI4-02. # include <iostream.h> # include <conio.h> # include <math.h> # include <ctype.h> # include <stdlib.h>

29

void main() { clrscr(); //Program Konversi dari desimal ke bilangan hexadesimal char HX[4]; int heksa[4]; int i, des,D; //Bagian pemasukan data cout<<"Masukan bilangan desimal anda="<<endl; cin>>des; while(des<0 || des> 32766) { cout<<"Data diluar range bilangan integer, " <<"Ulangi pemasukan data"<<endl; cin>>des; } D=des; for(i=0;i<4;i++) { heksa[i]=des/pow(16,(3-i)); des=des-heksa[i]*pow(16,(3-i)); } cout<<"Bilangan HEXADESIMAL anda ="; for(i=0;i<4;i++) { switch (heksa[i]) { case 10 : HX[i]='A'; break; case 11: HX[i]='B'; break; case 12: HX[i]='C';

30

break; case 13: HX[i]='D'; break; case 14 : HX[i]='E'; break; case 15 : HX[i]='F'; break; case 0 : HX[i]='0'; break; case 1 : HX[i]='1'; break; case 2: HX[i]='2'; break; case 3: HX[i]='3'; break; case 4 : HX[i]='4'; break; case 5: HX[i]='5'; break; case 6: HX[i]='6'; break; case 7 : HX[i]='7'; break; case 8:

31

HX[i]='8'; break; case 9: HX[i]='9'; break; } } cout<<endl; //Bagian proses konversi dari desimal ke hexadesimal cout<<"Bilangan desimal ="<<D<<endl; cout<<"Bilangan Hexedesimal="; for(i=0;i<4;i++) cout<<HX[i];" "; getch(); } II.3. Konversi dari Biner ke Hexadecimal Dari sistim bilangan Biner dapat langsung dirubah ke sistim bilangan Hexadecimal dengan menggunakan cara pengelompokan empat-empat. Pengelompokan dimulai dari titik pemisah pecahan : contoh: ( Lihat tabel lampiran I) 1110101.10111B = 0111 0101. 1011 1000 7 = 75.B8H Tugas 4-2: Buatlah program untuk membaca serangkaian data biner (panjangnya terserah anda). Periksa keabsahan data dan tolak bila datanya bukan Biner. Kemudian konversikan ke Hexadecimal dengan menggunakan metoda diatas (lihat program PI3-04). Simpan dengan nama PI4-03. II.4. Konversi dan Hexadecimal ke Biner 5 B 8

32

Dari sistim bilangan Hexadecimal juga dapat langsung dikonversikan ke Biner dengan menggunakan kebalikan dari cara diatas. Setiap digit bilangan Hexadecimal dirubah menjadi biner 4 digit. Contoh : 234.23H = 0010 0011 0100. 0100 0011B 2 Tugas 4-3 Buatlah program untuk membaca serangkaian data Hexadecimal (panjangnya terserah anda). Kemudian konversikan ke Biner dengan menggunakan metoda diatas( Lihat program PI3-05). Simpan dengan nama PI4-04 3 4 4 3

33