Tutorial Bahasa C/C++: Konversi Bilangan Desimal Ke Bilangan Hexa


Cimage

Salam C!

Bilangan hexadesimal merupakan representasi bilangan yang penting di dunia elektronika dan pemrograman komputer. Representasi bilangan yang komponen digitnya ada 16, yakni 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F atau bilangan basis 16 ini boleh saya bilang sebagai representasi yang paling dekat dengan bilangan biner, karena dapat dengan mudah mengafal nilai hexadesimal dari bilangan biner 0000 – 1111.

Biner 0000 0001 0010 0011 0100 0101 0110 0111
Hexadesimal 0 1 2 3 4 5 6 7
Biner 1000 1001 1010 1011 1100 1101 1110 1111
Hexadesimal 8 9 A B C D E F

Dari tabel konversi bilangan biner ke hexa mulai 0000 sampai dengan 1111, kita dapat langsung mencari nilai bilangan hexa dari 1010-1010 misalnya, yakni AA.

Nah, berikut ini adalah source code untuk mengkonversi bilangan desimal (basis 10) ke bilangan hexa dalam bahasa C tentunya.

/*
    Contoh program konversi bilangan desimal ke hexadesimal
    Chandra MDE – Teknik Elektro Links (http://teknikelektrolinks.com)
*/

#include <stdio.h>

static char hexstr[17] = "0123456789ABCDEF";
int desimal, x, y;
char hexa[10];

int main()
{
    printf("———————————————————\n");
    printf(" Contoh program konversi bilangan desimal ke hexadesimal \n");
    printf("———————————————————\n");
    printf(" Masukkan bilangan desimal = ");
    scanf("%d", &desimal);
    x = desimal;
    y = 0;
    while(x>0)
    {
        hexa[y] = hexstr[x % 16];
        y++;
        x = x / 16;
    }
    printf(" Bilangan %d desimal = ", desimal);
    for (x=1; x<=y;  x++)
        printf(hexa[y-x]);
    printf(" hexa\n");
    printf("———————————————————\n");
    return 0;
}

Program ini mengkonversi layaknya kita mengkonversi bilangan desimal ke bilangan hexa secara manual dengan pembagian bersusun.

Sisa pembagian 16 (sisa hasil bagi) direpresentasikan menjadi digit hexa antara 0123456789ABCDEF. Variabel char hexa[10] digunakan untuk menampung data digit hexa dari sisa hasil bagi bilangan desimal dengan 16. Ilustrasinya adalah sebagai berikut.

145 : 16 = 9, sisa 1 –> hexa[0] = hexstr[1] = ‘1’

9 : 16 = 0, sisa 9 –> hexa[9] = hexstr[9] = ‘9’

Jadi nilai hexa dari 145 adalah 91

Oleh karenanya untuk menampikan hasil konversi dilakukan pencetakan per karakter mulai dari urutan yang terakhir.

for (x=1; x<=y; x++)
    printf(hexa[y-x];

Dan berikut adalah screenshot program tersebut.

int2hex_ch

Selamat belajar!

🙂

2 comments

  1. fajri · Agustus 11, 2014

    ijin cb gan…thax…

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s