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.
Setelah itu kita dapat mencoba untuk mengkonversi bilangan heksadesimal menjadi bilangan desimal secara perhitungan manual ataupun menggunakan program Java.Konversi hexadecimal |
- 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 :
- Tulis setiap digit terpisah, lihat nilai perpangkatan hexadesimal di atas.
AF7116 = A x 409610 + F x 25610 + 7 x 1610 + 1 x 1 - Kemudian konversi nilai non-desimal menjadi nilai desimal :
A x 409610 = 1010 x 409610
F x 25610 = 1510 x 25610 - Hitung jumlah keseluruhan :
AF7116 = 40960 + 3840 + 112 + 1
AF7116 = 44913
maka 44913 adalah nilai desimalnya
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.
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.
Saya tidak mengerti dari line 43-49, bagaimana proses mendapatkan bilangan desimalnya?
ReplyDeleteBisa 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.
ReplyDeleteNilai 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
kak, gimana cara mengatasi programnya apabila angka yang diinputkan bukan hexadecimal, misalnya yang diinputkan 'G'?
ReplyDelete