Skip to content Skip to sidebar Skip to footer

Belajar Java Konversi Hexadesimal Ke Desimal

Belajar Java Konversi Hexadesimal Ke Desimal

Belajar Java Konversi Hexadesimal Ke Desimal - Untuk dapat melakukan konversi ini, kita harus mengetahui, apa itu bilangan desimal dan bilangan hexadesimal.

Belajar Java Konversi Hexadesimal Ke Desimal
Konversi hexadecimal
Setelah itu kita dapat mencoba untuk mengkonversi bilangan heksadesimal menjadi bilangan desimal secara perhitungan manual ataupun menggunakan program Java.

  • Bilangan Desimal

    Bilangan desimal adalah bilangan dengan basis 10 atau bisa disebut per-sepuluhan.

    Bilangan ini menggunakan sepuluh simbol berbeda untuk menyatakan nilai dari nol sampai sembilan. Sepuluh simbol yang digunakan dalam sistem angka desimal membentuk basis dari sistem angka desimal.

    Note : Perlu diperhatikan pangkatnya, seperti di bawah ini :

    100 = 1
    10110 = 1010
    102 = 100
    103 = 1000
    104 = 10000

    dan seterusnya.

    Sedangkan angka subscript digunakan untuk menunjukkan basis yang digunakan.

    Jadi, misalkan :

    4786410

    Bilangan ini berada dalam basis 10, dan dapat ditulis :

    4786410 =  4 x 104 + 7 x 103 + 8 x 102 + 6 x 101 + 4 x 100
  • Bilangan Hexadesimal

    Sedangkan bilangan hexadesimal adalah bilangan dengan basis 16 atau per-enam belasan, bilangan ini menggunakan 16 simbol berbeda untuk menyatakan nilai dari nol sampai lima belas.

    16 simbol angka hexadesimal tersebut akan membentuk basis dari sistem hexadesimal.

    Di bawah ini adalah cara memulai menghitung hexadesimal :

    a) 0 - 15 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
    b)16 - 32 :  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20

    Perhatikan nilai di bawah ini :

    160 = 1
    16110 = 1610
    162 = 256
    163 = 4096
    164= 65536
    165= 1048576

    jika kita menunjukkan ini dalam hexadesimal, maka ditulis 1016, 100, 1000 dan seterusnya. Sedangkan angka subscript digunakan untuk menunjukkan basis yang digunakan.

    Misalkan :

    10016 adalah '100 dalam basis 16'.

Cara Konversi Dari Hexadesimal Ke Desimal Cara Manual

Berlatih secara menual mengkonversi bilangan dari hexadesimal ke desimal adalah cara yang sangat baik untuk cepat memahami dan familiar dengan basis ini.
Misalkan :

AF7116, jika dikonversi ke bilangan desimal :
  1. Tulis setiap digit terpisah, lihat nilai perpangkatan hexadesimal di atas.
    AF7116 = A x 409610 + F x 25610 + 7 x 1610 + 1 x 1
  2. Kemudian konversi nilai non-desimal menjadi nilai desimal :
    A x 409610 = 1010 x 409610
    F x 25610 = 1510 x 25610
  3. Hitung jumlah keseluruhan :
  4. AF7116 = 40960 + 3840 + 112 + 1
    AF7116 = 44913

    maka 44913  adalah nilai desimalnya
Misalkan 1D :
1D = 1 x 16 + 13
1D = 29 
Jadi nilai desimal dari 1D adalah 29.

Cara Konversi Dari Hexadesimal Ke Desimal Menggunakan Program Java

Bagaimana bila konversi menggunakan program Java?

Algoritma yang digunakan untuk konversi hexadesimal ke desimal adalah algoritma Horner, kode dengan algoritma ini terkenal cukup efisien.

Algoritmanya adalah :
  • Mengkonversi setiap hex char menjadi angka desimal
  • Mengalikannya dengan 16i untuk digit hexadecimal  pada posisi i 
  • Menjumlahkan semuanya secara keseluruhan untuk mendapatkan  nilai desimal yang equivalen untuk angka hexadesimal tersebut.
Misal :

A8FD16


Nilai dari ((10*16+8)*16+15) *16 + 13 = 43261, dan ini adalah nilai konversi dari A8FD menjadi desimal.

 
Bila dituangkan kedalam coding, algoritma ini menjadi :

int nilaiDesimal = 0;  
         
       for (int i = 0; i < hex.length(); i++) {  
              
            //method charAt() digunakan untuk  
            //mengembalikan nilai char pada index tertentu  
            char hexChar = hex.charAt(i);  
            nilaiDesimal = nilaiDesimal * 16 + hexCharKeDesimal(hexChar);  
            } 

Di bawah ini adalah contoh program untuk mengkonversi angka hexadecimal menjadi angka desimal :

import java.util.Scanner;  
    
public class KonversiHexadesimal {  
          
     
   public static void main(String[] args) {  
          
        Scanner input = new Scanner(System.in);  
          
        /** Membuat prompt untuk memasukkan hexadesimal */  
        System.out.print("Masukkan angka hexadesimal: ");  
          
        /** Input hexadesimal adalah dalam bentuk String */  
        String hexadecimal = input.nextLine();  
          
        /** Menampilkan nilai desimal setelah dikonversi dari hexadesimal  
        dengan memanggil method konversiHexadecimal  
        nilai yang diinput bisa berupa lowercase atau uppercase  
        namun semuanya diubah menjadi uppercase menggunakan .toUppercase   
        sebelum method konversiHexadecimal dipanggil */ 
        System.out.println("Nilai desimal untuk angka hexadesimal "  
        + hexadecimal + " adalah " + konversiHexadecimal(hexadecimal.toUpperCase()));  
        }  
     
   /** Method untuk mengkonversi hexadesimal menggunakan loop */  
   public static int konversiHexadecimal(String hex) {  
          
        int nilaiDesimal = 0;  
          
        for (int i = 0; i < hex.length(); i++) {  
               
             /**method charAt() digunakan untuk  
             mengembalikan nilai char pada index tertentu */  
             char hexChar = hex.charAt(i);  
             nilaiDesimal = nilaiDesimal * 16 + hexCharKeDesimal(hexChar);  
             }  
        /** mengembalikan nilai desimal */ 
        return nilaiDesimal;  
          
   }  
     
   /** Method untuk mengembalikan nilai desimal dari hex character */  
   public static int hexCharKeDesimal(char ch) {  
        if (ch >= 'A' && ch <= 'F')  
             return 10 + ch - 'A';  
        else // ch adalah '0', '1', ..., atau '9'  
             return ch - '0';  
        }  
}

Penjelasan :
  • Pada line 14, program akan membaca nilai String.
  • Pada line 22, program akan memanggil method konversiHexadecimal untuk mengkonversi hex String menjadi nilai desimal. Character ini dapat berupa lowercase ataupun uppercase. Mereka dikonversi menjadi uppercase terlebih dahulu sebelum method konversiHexadecimal dipanggil.
  • Pada line 26 - 40, method konversiHexadecimal, program akan mengembalikan nilai integer. Panjang dari string ditetapkan dengan memanggil method hex.length pada line 30.
  • Pada line 43 - 49, akan mengembalikan nilai desimal untuk hex character. Character dapat sebagai uppercase ataupun lowercase. Harap diingat bahwa untuk pengurangan dua character adalah dengan mengurangi Unicodenya.
    Contoh : '4' - '0' adalah 4.
Demikianlah Belajar Java Konversi Hexadesimal Ke Desimal, semoga bisa menambah pengetahuan kita semua.

3 comments for "Belajar Java Konversi Hexadesimal Ke Desimal"

  1. Saya tidak mengerti dari line 43-49, bagaimana proses mendapatkan bilangan desimalnya?

    ReplyDelete
  2. Bisa dilihat parameter pada method hexCharKeDesimal(char ch) adalah karakter. Digit hexadecimal adalah 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
    Nilai unicode karakter:
    A = 41
    B = 42
    C = 43
    D = 44
    E = 45
    F = 46

    bisa cek di https://unicode-table.com/en/

    Misalnya jika nilai parameter adalah 'C', dari kode tersebut
    maka nilai desimalnya = 10 + 43 - 41 = 12

    ReplyDelete
  3. kak, gimana cara mengatasi programnya apabila angka yang diinputkan bukan hexadecimal, misalnya yang diinputkan 'G'?

    ReplyDelete