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.

“Program Konversi”
Decimal ke Biner

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.

“Program Konversi”
Decimal ke Octal

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.

“Program Konversi”
Decimal ke Hexadecimal

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.

“Program Konversi”
Program Konversi Decimal

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