Tugas Dasar Digital
Transcript of Tugas Dasar Digital
LAPORAN TUGAS MATA KULIAH DASAR DIGITAL
PROGRAM KONVERSI BILANGAN DECIMAL KE BINNER, OCTAL DAN HEXADECIMAL
DANBINNER KE DECIMAL, OCTAL DAN HEXADECIMAL
Oleh Kelompok 4:
AGAM RAMADHAN (090170013)
DONI IRAWAN (090170022)
MUHAMMAD FAUZI (090170045)
MUHAMMAD REZA (090170005)
EKA SUSANTI (090170012 )
NURLINA (090170040)
PRODI TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS MALIKUSSALEH
1
BAB IPENDAHULUAN
1. Sistem BilanganBanyak sistem bilangan yang dapat dan telah dipakai dalam melaksanakan
perhitungan. Tetapi ada sistem bilangan yang sudah jarang dipakai ataupun tidak dipakai lagi sama sekali dan ada pula sistem bilangan yang hanya dipakai pada hal-hal tertentu saja. Sistem bilangan limaan (quinary) dipergunakan oleh orang Eskimo dan orang Indian di Amerika Utara zaman dahulu. Sistem bilangan Romawi yang sangat umum dipakai pada zaman kuno, kini pemakaiannya terbatas pada pemberian nomor urut seperti I untuk pertama, II untuk kedua, V untuk kelima dan seterusnya; kadang-kadang dipakai juga untuk penulisan tahun seperti MDCCCIV untuk menyatakan tahun 1804. Sistem bilangan dua belasan (duodecimal) sampai kini masih banyak dipakai seperti 1 kaki = 12 Inci, 1 lusin = 12 buah dan sebagainya. Namun yang paling umum dipakai kini adalah sistem bilangan puluhan (decimal) yang kita pakai dalam kehidupan sehari-hari. Karena komponen-komponen komputer digital yang merupakan sistem digital bersifat saklar (switch), sistem bilangan yang paling sesuai untuk komputer digital adalah sistem bilangan biner (binary). Keserdehanaan pengubahan bilangan biner ke bilangan oktal atau heksadesimal dan sebaliknya, membuat bilangan oktal dan heksadesimal juga banyak dipakai dalam dunia komputer, terutama dalam hubungan pengkodean. Bilangan Biner, Oktal dan Heksadesimal akan dibahas dalam bab ini didahului dengan pembahasan singkat tentang bilangan desimal sebagai pengantar. Beberapa sistem bilangan :- Bilangan Desimal adalah bilangan yang memiliki basis 10
Bilangan tersebut adalah 0,1, 2, 3, 4, 5, 6, 7, 8, 9 (r = 10)- Bilangan Biner
Bilangan biner adalah bilangan yang memiliki basis 2Bilangan tersebut adalah 0 dan 1 (r = 2)
- Bilangan OktalBilangan oktal adalah bilangan yang memiliki basis 8 Bilangan tersebut adalah 0, 1, 2, 3, 4, 5, 6, 7 (r = 8)
- Bilangan HeksadesimalBilangan heksadesimal adalah bilangan yang memiliki basis 16Bilangan tersebut adalah 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E dan F (r = 16)
2. Konversi Bilangan- Konversi Bilangan Desimal ke Bilangan Biner
Nilai bilangan desimal dibagi dengan 2, pembacaan nilai akhir hasil pembagian dan urutan sisa hasil pembagian adalah bentuk bilangan biner dari nilai desimal.Contoh :Ubah bilangan desimal 9 ke bentuk bilangan biner.Jawab :
9/2 = 4 sisa 14/2 = 2 sisa 02/2 = 1 sisa 0
2
1/2 = 0 sisa 1Maka hasil konversi tersebut adalah : 1001
- Konversi Bilangan Biner ke Bilangan DesimalSetiap urutan nilai bilangan biner dijumlahkan, dengan terlebih dahulu nilai biner tersebut dikalikan bobot bilangan biner masing-masing.Contoh :Ubah bilangan biner 1001 ke dalam bilangan desimalJawab : (1 x 23) + (0 x 22) + (0 x 21) + (1 x 20) =(1 x 8) + (0 x 4) + (0 x 2) + (1 x 1) =8 + 0 + 0 + 1 = 9Jadi hasil konversi bilangan biner 1001 adalah 9 desimal
- Konversi Bilangan Desimal ke Bilangan HeksadesimalNilai bilangan desimal dibagi dengan 16, pembacaan nilai akhir hasil pembagian dan urutan sisa hasil pembagian adalah bentuk bilangan Heksadesimal dari nilai desimal.Contoh :Ubah bilangan desimal 3409 ke dalam bilangan HeksadesimalJawab :
3409/16 = 213 sisa 1 = 1213/16 = 13 sisa 5 = 513/16 = 0 sisa 13 = D
Maka hasil konversi bilangan desimal 3409 adalah D51 Heksa
- Konversi Biner ke HeksadesimalPengelompokan setiap empat digit bilangan biner.Setiap kelompok akan menandakan nilai heksa daei bilangan tersebut.Contoh : Ubahlah bilangan biner 10011110101 ke dalam bilangan heksaJawab :
0100 1111 0101 4 F 5
Jadi, hasil konversi bilangan biner 10011110101 adalah 4F5
- Konversi Desimal ke Bilangan OktalNilai bilangan desimal dibagi dengan 8, pembacaan nilai akhir hasil pembagian dan urutan sisa hasil pembagian adalah bentuk bilangan oktal dari nilai desimal.Contoh :Ubah bilangan desimal 529 ke dalam bilangan oktalJawab :
529/8 = 66 sisa 166/8 = 8 sisa 28/8 = 1 sisa 0
3
1/8 = 0 sisa 1Jadi hasil konversi bilangan desimal 529 adalah 1021 oktal
- Konversi Bilangan Biner ke Bilangan OktalPengelompokan setiap tiga digit bilangan biner.Setiap kelompok akan menandakan nilai oktal dari bilangan tersebut.Contoh :Ubahlah bilangan biner 11110011001 ke dalam bilangan oktalJawab :
011 110 011 001 3 6 3 1
Jadi hasil konversi bilangan biner 11110011001 adalah 3631
4
1
2
3 4 5
6
7
8
BAB IISOURCE CODE PROGRAM KONVERSI BILANGAN
Keterangan (dalam source code) :
1. rg_input (0 = Decimal, 1 = Biner)2. ed_input3. btn_proses4. button25. button16. ed_output7. rg_output (0 = Decimal, 1 = Biner, 2 = Octal, 3 = Desimal)8. btn_about
Source code yang kami buat untuk program ini adalah menggunakan Borland Delphi 7.0, berikut source kodenya :
const BinArray: array[0..15, 0..1] of string =
(('0000', '0'), ('0001', '1'), ('0010', '2'), ('0011', '3'),
('0100', '4'), ('0101', '5'), ('0110', '6'), ('0111', '7'),
('1000', '8'), ('1001', '9'), ('1010', 'A'), ('1011', 'B'),
('1100', 'C'), ('1101', 'D'), ('1110', 'E'), ('1111', 'F'));
var a:array[1..99] of word;
i,k,d:word;
s,s1,s2,s3:string;
p:extended;
5
KONVERSI DESIMAL KE BINER, OCTAL, DAN HEXADESIMAL
Konversi Bilangan Desimal ke Bilangan Bilangan Biner
if rg_input.ItemIndex =0 then
begin
if rg_output.ItemIndex =1 then
begin
ed_output.Clear;
d:=strtoint(ed_input.Text);
k:=0;
While d>=2 do
begin
k:=k+1;
a[k]:=d mod 2;
d:=d div 2;
end;
k:=k+1;
a[k]:=d;
for i:=k downto 1 do
ed_output.Text:=ed_output.text+inttostr(a[i]);
end;
Konversi Bilangan Desimal ke Bilangan Octal
if rg_output.ItemIndex =2 then
begin
ed_output.Clear;
ed_output.Clear;
d:=strtoint(ed_input.Text);
k:=0;
While d>=8 do
begin
k:=k+1;
a[k]:=d mod 8;
d:=d div 8;
end;
k:=k+1;
a[k]:=d;
for i:=k downto 1 do
ed_output.Text:=ed_output.text+inttostr(a[i]);
end;
6
Konversi Bilangan Desimal ke Bilangan Hexadesimal
if rg_output.ItemIndex = 3 then
begin
ed_output.Clear;
ed_output.Clear;
d:=strtoint(ed_input.Text);
k:=0;
While d>=16 do
begin
k:=k+1;
a[k]:=d mod 16;
d:=d div 16;
end;
k:=k+1;
a[k]:=d;
for i:=k downto 1 do
begin
case a[i] of
10:s:='A';
11:s:='B';
12:s:='C';
13:s:='D';
14:s:='E';
15:s:='F';
else
s:=inttostr(a[i]);
end;
ed_output.Text:=ed_output.Text+s;
end;
end;
end;
7
KONVERSI BINER KE DESIMAL, OCTAL, DAN HEXADESIMAL
Konversi Bilangan Biner ke Desimal
if rg_input.ItemIndex =1 then
begin
if rg_output.ItemIndex =0 then
begin
s:=ed_input.Text ;
d:=Length(s);
p:=0;
for i:=1 to d do
if (s[i]='0')or(s[i]='1') then
p:=p+Power(2, d-i)*StrToInt(s[i]);
ed_output.Text:=floattostr(p);
end;
Konversi Bilangan Biner ke Octal
if rg_output.ItemIndex = 2 then
begin
ed_output.Clear;
s:=ed_input.text;
case Length(s) mod 3 of
1: s:='00'+s;
2: s:='0'+s;
end;
while length(s) > 0 do
begin
s1:=Copy(s, Length(s)-2, 3);
Delete(s, Length(s)-2, 3);
p:=0;
for i:=1 to 3 do
p:=p+strtoint(s1[i]) * power(2,3-i);
s2:=s2+floattostr(p);
end;
for i:=1 to length(s2) do
8
s3 :=s3 +s2[length(s2)-i+1];
ed_output.Text :=s3;
end;
Konversi Bilangan Biner ke Hexadesimal
if rg_output.ItemIndex =3 then
begin
ed_output.Clear;
s:=ed_input.Text ;
for i:=1 to Length(s) do
case Length(s) mod 4 of
1: s:='000'+s;
2: s:='00'+s;
3: s:='0'+s;
end;
while Length(s)>0 do
begin
s2:=Copy(s, Length(s)-3, 4);
Delete(s, Length(s)-3, 4);
for i:=1 to 16 do
if s2=BinArray[i-1, 0] then
ed_output.Text :=BinArray[i-1, 1]+ed_output.Text ;
end;
BAB III
ALUR PROGRAM
1. Konversi Bilangan Desimal ke Biner
- a : array [1..99] of word → memberikan nilai array dengan
jangkauan dari 1 sampai 99
- d := strtoint (ed_input.text); → masukkan nilai (bilangan desimal)
yang di source kode ini diberi variabel d
- k := 0 → memberikan nilai variabel k sementara = 0
9
falsetrue
- while d >= 2 do begin → perulangan menggunakan while do untuk d >= 2
k := k + 1; → nilai k menjadi 0 + 1 = 1 dan seterusnya
a [k] := d mod 2; → menyimpan array untuk indeks k yang berisikan nilai d
mod 2 (sisa hasil bagi 2)
d := d div 2; → nila d menjadi d div 2 (hasil bagi 2)
end;
perulangan tersebut akan berhenti ketika d < 2 & dilanjutkan ke code berikutnya
- k := k + 1; → nilai k menjadi bertambah 1 lagi
- a [k] := d; → menyimpan array untuk indeks k yang berisikan nilai d
- for i = k downto do ed_output.text := ed_output.text + inttostr (a[i]); → Menampilkan nilai a [i] (nilai yang dhasilkan merupakan
nilai binner dari masukkan nilai tadi).
- end; → akhir program
10
Akhir
Mulai
a : array [1..99]of word
Masukkan nilai (d)
K = 0
Whiled >= 2
K = k + 1 K = k + 1
a [k] = d mod 2
d = d div 2
a [k] = d
For i = k downto 1
Cetak a [i]
Akhir
2. Konversi Bilangan Desimal ke Oktal
Untuk alur bilangan octal sama juga dengan alur bilangan binner hanya saja untuk code bilangan octal :
- while d >= 2 do begin diganti menjadi while d >= 8 do
- a [k] := d mod 2; diganti menjadi a [k] := d mod 8;
- d := d div 2; diganti menjadi d := d div 8;
3. Konversi Bilangan Desimal ke Hexadesimal
Untuk alur bilangan octal sama juga dengan alur bilangan binner hanya saja untuk code bilangan octal :
- while d >= 2 do begin diganti menjadi while d >= 16 do
- a [k] := d mod 2; diganti menjadi a [k] := d mod 16;
- d := d div 2; diganti menjadi d := d div 16;
namun setelah for i:=k downto 1 do ditambahkan
begin
case a[i] of
10:s:='A';
11:s:='B';
12:s:='C';
13:s:='D';
14:s:='E';
15:s:='F';
else
s:=inttostr(a[i]);
end;
4. Konversi Bilangan Biner ke Desimal
if rg_input.ItemIndex =1 then → memilih menu biner
begin
if rg_output.ItemIndex =0 then → memilih konversi ke decimal
begin
11
s:=ed_input.Text; → masukkan nilai
d:=Length(s); → menghitung panjang karakter dari masukkan (s)
p:=0; → memberi nilai sementara p = 0
for i:=1 to d do
if (s[i]='0')or(s[i]='1') then → mencari apakah nilai dalam masukkan
s tadi, mengandung angka 1 dan 0 karena bilangan biner menggunakan angka 1 dan 0
p:=p+Power(2, d-i)*StrToInt(s[i]); → proses bilangan desimal ke biner
ed_output.Text:=floattostr(p); → menampilkan hasil proses berupa bilangan
desimal
end; → akhir proses konversi dari biner ke decimal
12
Mulai
Masukkan (s)
d:=Length(s);p := 0
for i:=1 to d do
if (s[i]='0')or(s[i]='
1')
p :=p+Power(2, d-i) * StrToInt(s[i]);
ed_output.Text:=floattostr(p);
Akhir
5. Konversi Bilangan Biner ke Oktal
if rg_output.ItemIndex = 2 then → memilih konversi ke Oktal
begin
ed_output.Clear;
s:=ed_input.text; → masukkan (s)
case Length(s) mod 3 of → jika panjang karakter habis dibagi 3
1: s:='00'+s;
2: s:='0'+s;
end;
while length(s) > 0 do → jika panjang karakter > 0 maka perulangan dilakukan
begin
s1:=Copy(s, Length(s)-2, 3); → mengcopy sementara masukkan (s) setelah
dikurang 2 dan pada posisi yang ke 3
Delete(s, Length(s)-2, 3); mendelete masukkan (s) setelah dikurang 2 dan
pada posisi yang ke 3
p:=0;
for i:=1 to 3 do
p:=p+strtoint(s1[i]) * power(2,3-i); → proses ke bentuk oktal
s2:=s2+floattostr(p); → menyimpan nilai s2 sementara
end;
for i:=1 to length(s2) do
s3 :=s3 +s2[length(s2)-i+1]; → menyimpan nila oktal
ed_output.Text :=s3; → menampilkan hasil proses bilangan biner menjadi oktal
end; → akhir
13
6. Konversi Bilangan Biner ke Hexadesimal
if rg_output.ItemIndex =3 then → memilih konversi ke hexadecimal
begin
ed_output.Clear;
s:=ed_input.Text ; → masukkan (s)
for i:=1 to Length(s) do → perulangan terhadap panjang karakter (s)
case Length(s) mod 4 of→ case panjang karakter tersebut jika habis dibagi 4
1: s:='000'+s;
2: s:='00'+s;
3: s:='0'+s;
end;
while Length(s)>0 do → melakukan perulangan jika panjang karakter > 0
begin
s2:=Copy(s, Length(s)-3, 4); → mengcopy sementara masukkan (s) setelah
dikurang 3 dan pada posisi yang ke 4
Delete(s, Length(s)-3, 4); → mendelete masukkan (s) setelah dikurang 3
dan pada posisi yang ke 4
for i:=1 to 16 do → melakukan perulangan ke 16
if s2=BinArray[i-1, 0] then → menyimpan sementara s2 dengan array
BinArray yang telah di deklarasikan nilainya sebelumnya
ed_output.Text :=BinArray[i-1, 1]+ed_output.Text ; →
menampilkan hasil proses konversi biner ke hexadecimal
end; → akhir program
14