Setelah beberapa waktu yang lalu saya memposting artikel tentang bagaimana membuat program
konversi bilangan desimal ke biner, sekarang saya coba untuk membuat artikel kebalikannya.
Dalam judul ini sengaja saya kasih embel-embel ‘ide’ karena memang
fokus dari artikel ini adalah menggambarkan idenya, dan bukan hanya
sekedar menampilkan programnya saja.
OK.. misalkan diberikan sebuah bilangan biner atau bilangan berbasis
dua 10110. Apakah Anda mengetahui konsep untuk mengkonversinya ke bentuk
desimal atau bilangan berbasis 10? Anda mungkin telah mengetahui
konsepnya ketika di perkuliahan. Bagi yang belum mengetahui, berikut ini
adalah proses konversinya:
(10110)
2 = 1×2
4 + 0×2
3 + 1×2
2 + 1×2
1 + 0×2
0
(10110)
2 = 16 + 0 + 4 + 2 + 0 = 22
Dengan demikian hasil konversi bilangan biner 10110 ke desimal adalah 22.
Bila kita lihat dari contoh di atas, maka sebenarnya terdapat proses yang diulang-ulang dalam mengkonversi
n digit bilangan biner yaitu menghitung
bi x 2
i, dengan
i =
n-1,
n-2,
n-3, …, 0 dan
bi adalah digit biner ke-
i. Selain menghitung
bi x 2
i, terdapat proses lain yang diulang-ulang yaitu menjumlahkan
bi x 2
i untuk setiap
i.
Nah… berdasarkan konsep tersebut, OK… kita sudah mendapatkan idenya.
Karena terdapat sesuatu yang diulang maka ketika kita akan membuat
program untuk mengkonversinya, kita akan menggunakan looping yang dalam
hal ini akan digunakan
i sebagai counternya.
Namun… jika kita lihat konsep di atas, maka nilai
i dimulai dari
n-1, selanjutnya
n-2 dst… sampai 0. Dengan kata lain, kita terlebih dahulu harus mengetahui nilai
n
nya yang dalam hal ini merupakan jumlah digit biner. Bagaimana cara
mengetahuinya? Hmmm… Anda dapat dengan mudah mengetahuinya apabila
bilangan binernya disajikan dalam bentuk tipe data string. Dengan
demikian Anda bisa menggunakan function
length()
untuk mendapatkan panjang stringnya
OK… we’ve got it… now let’s get into PASCAL program..
01.
program
konversiBiner2Dec;
02.
var
bilBiner :
string
;
03.
04.
05.
06.
function
pangkat(a, b :
integer
) :
integer
;
07.
var
i, hasil :
integer
;
08.
begin
09.
hasil :=
1
;
10.
for
i:=
1
to
b
do
11.
begin
12.
hasil := hasil * a;
13.
end
;
14.
pangkat := hasil;
15.
end
;
16.
17.
18.
19.
function
bin2Dec(biner :
string
) :
integer
;
20.
var
n, sum, i :
integer
;
21.
begin
22.
n := length(biner);
23.
sum :=
0
;
24.
for
i:= n-
1
downto
0
do
25.
begin
26.
if
(biner[n-i] =
'0'
)
then
sum := sum +
0
* pangkat(
2
, i)
27.
else
if
(biner[n-i] =
'1'
)
then
sum := sum +
1
* pangkat(
2
, i);
28.
end
;
29.
bin2Dec := sum;
30.
end
;
31.
32.
begin
33.
bilBiner :=
'10110'
;
34.
write
(
'Bilangan desimalnya : '
, bin2Dec(bilBiner));
35.
end
.
Catatan:
Anda juga dapat mengubah blok for dalam function
bin2Dec()
menjadi seperti ini
1.
for
i:= n-
1
downto
0
do
2.
begin
3.
if
(biner[n-i] =
'0'
)
then
sum := sum;
4.
else
if
(biner[n-i] =
'1'
)
then
sum := sum + pangkat(
2
, i);
5.
end
;
Mengapa demikian? Ya… karena ketika digit binernya 0, maka hasil
jumlahannya tetap (tidak terpengaruh) sebagai akibat dari hasil
perkalian 0 * pangkat(2, i) = 0.
OK.. demikian sedikit penjelasan mengenai bagaimana ide membuat
program konversi dari biner ke desimal. Mudah-mudahan artikel ini
bermanfaat bagi Anda dalam mencari ide membuat konversi bilangan basis
yang lain ke desimal.