Click here to load reader
Upload
irwin-andriyanto
View
35
Download
0
Embed Size (px)
Citation preview
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 5 B 8
= 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
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 3 4 4 3
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
33