Hai semua, kali ini saya akan membuat program untuk mengkonversi bilangan decimal ke tiga bilangan lain yaitu binari, octal dan hexadecimal. Program yang akan kita buat menggunakan bahasa python serta beberapa library tambahan seperti tabulate.
Nah sebelum kita melangkah lebih jauh lagi, pertama kita harus mengetahui dasar cara mengkonversi bilangan.
Decimal ke Binner
Untuk mengkonversi bilangan Decimal ke dalam bilangan Biner yang paling mudah adalah membagi bilangan desimal ke basis bilangan biner yaitu 2, hasilnya nanti akan dibulatkan kebawah dan sisa hasil pembagian tersebut disimpan atau dicatat untuk nantinya akan diurutkan.
Lakukan pembagian tersebut sampai bilangan mencapai nilai 0, kemudian sisa pembagian yang sudah kita catat, diurutkan dari yang paling akhir hingga yang paling awal. Hasil pembagian tersebut lah yang menjadi bilangan biner.
Decimal ke Octal
Kemudian untuk mengkonversi bilangan Decimal ke dalam bilangan Octal adalah membagi bilangan desimal ke basis bilangan octal yaitu 8, hasilnya nanti akan dibulatkan kebawah dan sisa hasil pembagian tersebut disimpan atau dicatat untuk nantinya diurutkan.
Lakukan pembagian tersebut sampai bilangan mencapai nilai 0, kemudian sisa pembagian yang sudah kita catat, diurutkan dari yang paling akhir hingga yang paling awal. Hasil pembagian tersebut lah yang menjadi bilangan octal.
Decimal ke Hexadecimal
Terakhir mengkonversi bilangan Decimal ke dalam bilangan Hexadecimal , cara seperti kedua bilangan diatas, namun yang bikin unik, hexadecimal memiliki sampai 16 bilangan.
Sehingga untuk mencakupinya, bilangan 10 - 15 diganti menjadi huruf A - F.
Lets Code
Program yang kita buat memiliki satu input yaitu bilangan decimal dan memiliki 3 output sekaligus beserta cara konversinya. Kurang lebih bentuk programmnya seperti ini.
Pertama kita install dulu library dibutuhkan, yaitu tabulate yang berguna untuk membuat output dalam terminal terformat seperti table.
pip install tabulate
Setelah selesai proses installasi tabulate, kita import kedalam kode kita. Serta itertools
yang nanti nya berguna untuk mengkombinasikan beberapa list menjadi satu.
from tabulate import tabulate
import itertools as it
Selanjutnya kita membuat fungsi konversi. Fungsi ini bertujuan untuk mengenerate sebuah list tahap - tahap konversi yang nanti nya akan kita masukkan ke fungsi tabulate untuk outputnya.
def genConverter(angka, pembilang):
result = []
hasilAngka = ""
loop = True
while loop:
if angka >= pembilang:
result.append(angka)
sisa = angka % pembilang
angka = angka // pembilang
if sisa > 9:
huruf = libChar(sisa)
hasilAngka += huruf
sisa = "{0} = {1}".format(sisa, huruf)
else:
hasilAngka += str(sisa)
divid = "{0}------ {1}".format(pembilang, sisa)
result.append(divid)
else:
if angka > 9:
angka = libChar(angka)
hasilAngka += str(angka)
result.append(angka)
loop = False
break
result.append("")
hasilAngka = "".join(reversed(hasilAngka)) #reversed
return (result, hasilAngka)
Fungsi ini memiliki 2 parameter yaitu angka
dan pembilang
. Parmeter angka
untuk angka yang akan kita kalkulasi, pembilang
bilangan yang akan menjadi pembagi untuk menentukan kita akan mengkonversi bilangan apa.
Tidak lupa untuk membuat fungsi untuk mengkonversi bilangan di atas 9 ke huruf A - F.
def libChar(angka):
if angka == 10:
return "A"
elif angka == 11:
return "B"
elif angka == 12:
return "C"
elif angka == 13:
return "D"
elif angka == 14:
return "E"
elif angka == 15:
return "F"
elif angka == 16:
return "G"
Lalu setelah semua fungsi dibuat kita panggil fungsi genConverter
dengan parameter bilangan 2
untuk biner, 8
untuk octal dan 16
untuk hexadecimal.
angka = int(input("Masukkan bilangan untuk dikonversi : "))
biner, hasilBiner = genConverter(angka, 2)
octal, hasilOctal = genConverter(angka, 8)
hexa, hasilHexa = genConverter(angka, 16)
Terakhir kita combine ketiga variabel biner
, octal
dan hexa
ke dalam satu variabel table
untuk nantinya kita tampilkan dalam bentuk table.
table = list(it.zip_longest(biner, octal, hexa))
# ini untuk header table
header = ("Binner", "Octal", "Hexadecimal")
print(tabulate(table, header tablefmt="plain"))
print("")
print("==============================================================")
print("Binner : ", hasilBiner)
print("Octal : ", hasilOctal)
print("Hexa : ", hasilHexa)
Untuk full codenya kalian bisa kalian di github AnbiDev.
๐ https://github.com/AnbiDev/converter-bilangan
Oke sekian dari Anbi, sampai ketemua di FunCode selanjutnya
Happy Solving