Latihan Kode Program C++: Konversi Bilangan Biner ke Desimal

Latihan kode program C++ kali ini akan membahas cara konversi angka biner ke angka desimal. Ini merupakan kebalikan dari latihan konversi bilangan desimal ke biner. Materi soal menguji pemahaman terkait logika matematika, array, serta konsep perulangan for.


Soal Konversi Bilangan Biner ke Desimal

Buatlah kode program C++ yang menerima satu inputan angka biner (basis 2), dan menampilkan output dalam bentuk angka desimal (basis 10).

Berikut contoh hasil yang diinginkan (1):

Input angka biner: 1010011
Angka desimal dari biner 1010011 adalah = 83

Berikut contoh hasil yang diinginkan (2):

Input angka biner: 1111111
Angka desimal dari biner 1111111 adalah = 127

Tips Membuat Kode Program Konversi Biner ke Desimal

Soal ini melatih pemahaman terkait logika matematika, tipe data array dan konsep perulangan (looping). Berikut tutorial pendahuluan yang bisa diikuti:

Pemecahan dari soal ini sangat bergantung ke rumus cara konversi angka biner menjadi angka desimal. Salah satu solusi yang sering dipakai adalah membuat tabel pangkat 2, lalu mengalikan setiap angka biner.

Sebagai contoh, berapakah angka desimal dari 1101? Pertama, silahkan buat tabel berikut:

Biner 1 1 0 1
2x 23 = 8 22 = 4 21 = 2 20 = 1
Biner * 2x 8 4 0 1

Baris paling bawah didapat dengan mengalikan angka biner di posisi tersebut dengan pangkat 2 yang bersesuaian. Kemudian kita tinggal tambah semua angka = 8+4+0+1 = 13. Jadi, 1101 biner sama dengan 13 desimal.

Contoh lain, berapakah angka desimal dari 1100101? Kembali, kita perlu bantuan tabel:

Biner 1 1 0 0 1 0 1
2x 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1
Biner * 2x 64 32 0 0 4 0 1

Dengan menambah semua angka di baris paling bawah, maka 1100101 biner = 64+32+0+0+4+0+1 = 101 desimal.

Membuat proses konversi biner ke desimal dengan bantuan tabel memang cukup mudah. Tapi bagaimana menulisnya ke dalam kode program?

Salah satu cara bisa dengan memanfaatkan operator modulus (sisa hasil bagi). Masih menggunakan contoh yang sama, berikut cara mencari angka desimal dari 1101 biner :

  • 1101/10 = 110, sisa 1. Desimal di posisi ini = 1 * 20 = 1
  • 110/10 = 11, sisa 0. Desimal di posisi ini = 0 * 21 = 0
  • 11/10 = 1, sisa 1. Desimal di posisi ini = 1 * 22 = 4
  • 1/10 = 0, sisa 1. Desimal di posisi ini = 1 * 23 = 8

Total desimal = 1 + 0 + 4 + 8 = 13

Dan berikut cara mencari angka desimal dari 1100101 biner:

  • 1100101/10 = 110010, sisa 1. Desimal di posisi ini = 1 * 20 = 1
  • 110010/10 = 11001, sisa 0. Desimal di posisi ini = 0 * 21 = 0
  • 11001/10 = 1100, sisa 1. Desimal di posisi ini = 1 * 22 = 4
  • 1100/10 = 110, sisa 0. Desimal di posisi ini = 0 * 23 = 0
  • 110/10 = 11, sisa 0. Desimal di posisi ini = 0 * 24 = 0
  • 11/10 = 1, sisa 1. Desimal di posisi ini = 1 * 25 = 32
  • 1/10 = 0, sisa 1. Desimal di posisi ini = 1 * 26 = 64

Total desimal = 1 + 0 + 4 + 0 + 0 + 32 + 64 = 101

Konsep inilah yang akan kita tulis ke dalam kode program.


Kode Program C++Konversi Biner ke Desimal

Berdasarkan teori perhitungan sebelumnya, berikut kode program bahasa C++ untuk proses konversi bilangan biner ke desimal:

#include <iostream>

using namespace std;

int main()
{
  cout << "##  Program C++ Konversi Biner ke Desimal  ##" << endl;
  cout << "=============================================" << endl;
  cout << endl;

    int angka_biner, angka_desimal=0, i=1, digit;
    cout << "Input angka biner: ";
    cin >> angka_biner;

    cout << "Angka desimal dari biner "<< angka_biner;

    while(angka_biner!=0)
    {
      digit = angka_biner % 10;
      angka_desimal = angka_desimal + (digit*i);
      i = i*2;
      angka_biner = angka_biner/10;
    }

    cout << " adalah = " << angka_desimal;
    cout << endl;
    return 0;
}

Latihan Kode Program C++ - Konversi Bilangan Biner ke Desimal

Di baris 11 terdapat pendefinisian 4 buah variabel:

  • angka_biner untuk menampung digit angka biner yang diinput oleh user.
  • angka_desimal untuk menampung hasil dari proses konversi ke angka desimal.
  • i untuk menandakan posisi digit (mencari angka pangkat 2).
  • digit sebagai variabel bantu saat proses perulangan.

Di baris 13, inputan user akan ditampung ke dalam variabel angka_biner.

Perulangan while di baris 17-23 dipakai untuk mencari total angka desimal. Selama variabel angka_biner tidak 0, maka jalankan terus perulangan.

Di awal perulangan, ambil 1 digit paling kanan dan simpan ke variabel digit. Ini dilakukan dengan perintah digit = angka_biner % 10.

Kemudian cari nilai desimal dari 1 digit tadi dengan perintah angka_desimal = angka_desimal + (digit*i).

Lanjut di baris 21, nilai variabel i dikali 2 untuk persiapan ke iterasi berikutnya.

Di baris 22, variabel angka_biner dibagi 10 agar 1 digit paling kanan terhapus. Di dalam bahasa C++, angka pecahan yang disimpan ke dalam tipe data integer otomatis terhapus.

Kita sudah selesai di 1 digit paling kanan, dan karena variabel angka_biner masih berisi sesuatu, maka perulangan akan kembali ke baris 19, ambil 1 digit lagi, cari angka desimalnya, naikkan nilai i, lalu hapus 1 digit paling kanan, dst.

Prinsip yang dipakai sama seperti teori sebelumnya. Sebagai contoh, kita akan konversi biner 1101.

  • 1101 % 10 = 1. Isi variabel i di posisi ini = 0, maka desimal saat ini = 0 + (1*20) = 1. Hapus satu digit paling kanan.
  • 110 % 10 = 0. Isi variabel i di posisi ini = 1, maka desimal saat ini = 1 + (0*21) = 1. Hapus satu digit paling kanan.
  • 11 % 10 = 1, Isi variabel i di posisi ini = 2, maka desimal saat ini = 1 + (1*22) = 5. Hapus satu digit paling kanan.
  • 1 % 10 = 1, Isi variabel i di posisi ini = 3, maka desimal saat ini = 5 + (1*23) = 13. Hapus satu digit paling kanan.

Perulangan yang dipakai memang sedikit kompleks. Silahkan luangkan waktu sebentar untuk mempelajarinya.


Demikian kode program konversi bilangan biner ke desimal menggunakan bahasa C++. Semoga tutorial ini bisa bermanfaat.

Add Comment