Kalkulator Hexadesimal
Tambah, kurangi, dan konversi bilangan hexadesimal. Lakukan aritmatika hex dan konversi ke desimal atau biner. Kalkulator matematika gratis, hasil instan.
Pengertian Hexadecimal (Base-16): Dasar
Hexadecimal (hex) adalah sistem angka posisi dengan basis 16. Ia menggunakan 16 simbol unik: angka 0-9 mewakili nilai nol hingga sembilan, dan huruf A-F (atau a-f) mewakili nilai sepuluh hingga lima belas. Satu digit hexadecimal mewakili tepat empat bit biner (sebuah "nibble"), membuat hex cara yang paling alami untuk mewakili data biner dalam format yang dapat dibaca manusia.
Nilai posisi setiap digit hex adalah kuadrat dari 16. Untuk bilangan hex 2F4:
- 2 berada di posisi 16² (256): 2 × 256 = 512
- F (15) berada di posisi 16¹ (16): 15 × 16 = 240
- 4 berada di posisi 16⁰ (1): 4 × 1 = 4
- Total: 512 + 240 + 4 = 756 desimal
Mengubah desimal ke hex: terus membagi dengan 16 dan merekam sisa (digit terkecil terlebih dahulu). 756 ÷ 16 = 47 R 4; 47 ÷ 16 = 2 R 15 (F); 2 ÷ 16 = 0 R 2. Baca sisa ke atas: 2F4₁₆ ✓. Di kebanyakan bahasa pemrograman, literal hex diberi awalan 0x: 0x2F4 = 756.
Tabel Konversi Hex ke Desimal
Referensi cepat untuk mengubah digit hex tunggal dan nilai hex umum ke desimal:
| Hex | Desimal | Biner | Arti Umum |
|---|---|---|---|
| 0x00 | 0 | 0000 0000 | Byte nol, salah, mati |
| 0x01 | 1 | 0000 0001 | Benar, diaktifkan |
| 0x0A | 10 | 0000 1010 | Karakter baris baru (LF) |
| 0x0D | 13 | 0000 1101 | Retur karussel (CR) |
| 0x1F | 31 | 0001 1111 | Pemisah unit |
| 0x20 | 32 | 0010 0000 | Karakter spasi (ASCII) |
| 0x41 | 65 | 0100 0001 | 'A' dalam ASCII |
| 0x61 | 97 | 0110 0001 | 'a' dalam ASCII (huruf kecil) |
| 0x7F | 127 | 0111 1111 | Karakter DEL; pasangan nibble terbesar |
| 0x80 | 128 | 1000 0000 | Bit tandanya terpasang (negatif dalam byte tanda) |
| 0xFF | 255 | 1111 1111 | Byte tidak terbatas; semua bit terpasang |
| 0x100 | 256 | 1 0000 0000 | Satu lebih dari byte terbesar |
| 0xFFFF | 65.535 | 16 satu | Nilai tidak terbatas 16-bit |
| 0xFFFFFF | 16.777.215 | 24 satu | Nilai tidak terbatas 24-bit (16M warna) |
Hubungan antara hex dan biner adalah langsung: setiap digit hex mewakili tepat empat bit. A = 1010, B = 1011, C = 1100, D = 1101, E = 1110, F = 1111. Mengubah 0xAB ke biner: A=1010, B=1011 → 10101011₂ = 171₁₀.
Aritmatika Hex: Penjumlahan, Pengurangan, Perkalian
Aritmatika hexadecimal mengikuti aturan yang sama seperti aritmatika desimal tetapi mengangkut dan meminjam pada 16 bukan 10. Memahami aritmatika hex sangat penting untuk pemrograman assembly, sistem embedded, dan membaca output kompiler.
Contoh penjumlahan: 3A + 27. Satuan: A + 7 = 10 + 7 = 17 = 1×16 + 1 → tuliskan 1, angkut 1. Enam belas: 3 + 2 + 1 (angkut) = 6. Hasil: 61₁₆ = 97₁₀. Verifikasi: 58 + 39 = 97 ✓.
Contoh pengurangan: C3 − 5F. Satuan: 3 < F (15), jadi pinjam: 3 + 16 − 15 = 4, dan angkut 1 ke kolom berikutnya. Enam belas: C (12) − 5 − 1 (pinjam) = 6. Hasil: 64₁₆ = 100₁₀. Verifikasi: 195 − 95 = 100 ✓.
Contoh perkalian: 1A × 3. A × 3 = 30 = 1E₁₆ (tuliskan E, angkut 1). 1 × 3 + 1 = 4. Hasil: 4E₁₆ = 78₁₀. Verifikasi: 26 × 3 = 78 ✓.
Untuk perhitungan hex kompleks, mengubah ke desimal, menghitung, dan mengubah kembali seringkali lebih dapat diandalkan kecuali Anda sangat terlatih. Namun, memahami aritmatika hex membangun intuisi untuk tata letak memori, register CPU, dan representasi data.
Hex dalam Desain Web: Kode Warna
HTML dan CSS kode warna adalah salah satu aplikasi paling terlihat dari hexadecimal di luar program. Warna ditulis sebagai #RRGGBB di mana setiap saluran berkisar dari 00 (intensitas 0) hingga FF (intensitas penuh). Ini memberikan 256³ = 16.777.216 warna yang mungkin.
| Kode Hex | Merah | Hijau | Biru | Nama Warna |
|---|---|---|---|---|
| #FF0000 | 255 | 0 | 0 | Merah murni |
| #00FF00 | 0 | 255 | 0 | Warna hijau murni (limau) |
| #0000FF | 0 | 0 | 255 | Biru murni |
| #FFFF00 | 255 | 255 | 0 | Warna kuning |
| #FF00FF | 255 | 0 | 255 | Magenta |
| #00FFFF | 0 | 255 | 255 | Cyan |
| #FFFFFF | 255 | 255 | 255 | Putih |
| #000000 | 0 | 0 | 0 | Hitam |
| #808080 | 128 | 128 | 128 | Abu-abu sedang |
| #FF5733 | 255 | 87 | 51 | Warna oranye cerah |
CSS juga mendukung warna 4 digit (#RGBA) dan 8 digit (#RRGGBBAA) hex di mana AA adalah saluran alpha (00 = transparan, FF = tidak transparan). Bentuk singkat warna (#RGB) memperluas dengan mengulang setiap digit: #F3A = #FF33AA.
Perancang web sering mengatur warna dengan mengubah nilai hex. Menambahkan ke saluran merah membuat warna lebih hangat; mengurangi membuatnya lebih dingin. Warna hex dengan nilai R, G, dan B yang sama selalu menghasilkan nuansa abu-abu. Warna seperti #7F7F7F adalah 50% abu-abu (127 dari 255 pada setiap saluran).
Hex dalam Program: Alamat Memori dan Manipulasi Bit
Dalam sistem program, hex adalah bahasa alami untuk alamat memori, flag bit, dan register perangkat keras. Setiap programmer yang bekerja di C, C++, assembly, atau sistem embedded selalu menghadapi hex.
Alamat memori: Pada sistem 32-bit, alamat berkisar dari 0x00000000 hingga 0xFFFFFFFF (4 GB). Rangkaian alamat umum: 0x00000000–0x00FFFFFF (memori rendah), 0x7FFFFFFF (max positif int 32-bit yang ditandatangani), 0x80000000 (awal ruang negatif dalam interpretasi yang ditandatangani), 0xFFFFFFFF (max unsigned 32-bit). Pada sistem 64-bit, ruang pengguna biasanya menempati 0x0000000000000000–0x00007FFFFFFFFFFF.
Manipulasi bit dengan masker hex: Operasi bit dinyatakan secara alami dalam hex karena mereka berada di batas nibble.
| Operasi | Ekspresi | Effek |
|---|---|---|
| Atur bit 3 | x |= 0x08 | Forcing bit 3 ke 1, meninggalkan yang lain tetap |
| Bersihkan bit 3 | x &= ~0x08 | Forcing bit 3 ke 0, meninggalkan yang lain tetap |
| Toggle bit 3 | x ^= 0x08 | Flip bit 3, meninggalkan yang lain tetap |
| Periksa bit 3 | (x & 0x08) != 0 | Uji apakah bit 3 telah diatur |
| Ekstrak nibble rendah | x & 0x0F | Dapatkan 4 bit terendah |
| Ekstrak nibble tinggi | (x >> 4) & 0x0F | Dapatkan 4 bit atas dari byte |
Konstanta hex terkenal: Programmers telah menciptakan konstanta yang teringat untuk debugging dan inisialisasi: 0xDEADBEEF (digunakan untuk menandai memori yang tidak diinisialisasi di sistem IBM lama), 0xCAFEBABE (nomor kelas file Java), 0xFEEDFACE (format biner Mach-O), 0x0BADF00D (sentinel debugging memori), 0xDEADC0DE (digunakan dalam deteksi kegagalan iOS). Konstanta-konstanta ini muncul tidak ambigu dalam dump hex, membuatnya mudah dilihat selama debugging.
Tanda Format File dan Forensik Hex
Setiap format file memiliki urutan byte karakteristik di awal yang disebut "nomor sihir" atau tanda file. Editor hex dan alat forensik digital menggunakan tanda-tanda ini untuk mengidentifikasi jenis file tanpa memperhatikan ekstensi file. Mengetahui tanda-tanda file penting untuk pemulihan data, analisis malware, dan forensik digital.
| Jenis File | Tanda Hex (byte pertama) | Representasi ASCII |
|---|---|---|
| File gambar JPEG | FF D8 FF | ÿØÿ |
| File gambar PNG | 89 50 4E 47 0D 0A 1A 0A | .PNG.... |
| File dokumen PDF | 25 50 44 46 | |
| File arsip ZIP | 50 4B 03 04 | PK.. |
| File gambar GIF | 47 49 46 38 | GIF8 |
| File eksekutif ELF (Linux) | 7F 45 4C 46 | .ELF |
| File eksekutif PE Windows | 4D 5A | MZ |
| File audio MP3 | FF FB atau 49 44 33 | ÿû atau ID3 |
| Database SQLite | 53 51 4C 69 74 65 | SQLite |
Profesional keamanan menggunakan hex untuk meninjau file biner tanpa percaya ekstensi file. File bernama "document.pdf" yang dimulai dengan 4D 5A adalah sebenarnya eksekutif Windows — trik malware yang umum. Analisis hex paket jaringan mengungkapkan struktur protokol, kepala enkripsi, dan potensi eksploit.
Perbandingan Basis Angka: Desimal, Binari, Oktal, Heksadesimal
Komputer menggunakan basis angka yang berbeda untuk tujuan yang berbeda. Memahami bagaimana mereka berhubungan membantu dalam membaca dokumentasi teknis, debugging, dan pengembangan sistem.
| Desimal | Binari (basis 2) | Oktal (basis 8) | Heksadesimal (basis 16) |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 0001 0000 | 20 | 10 |
| 64 | 0100 0000 | 100 | 40 |
| 128 | 1000 0000 | 200 | 80 |
| 255 | 1111 1111 | 377 | FF |
| 256 | 1 0000 0000 | 400 | 100 |
| 1024 | 100 0000 0000 | 2000 | 400 |
Oktal (basis 8) pernah umum digunakan dalam komputasi (muncul dalam hak akses file Unix: chmod 755 = 111 101 101 dalam binari = rwxr-xr-x). Heksadesimal (basis 16) menggantikan oktal untuk kebanyakan tujuan karena 4 bit per digit (heksadesimal) lebih sesuai dengan arsitektur modern 8-bit, 16-bit, 32-bit, dan 64-bit daripada 3 bit per digit (oktal).
Banyak Pertanyaan yang Sering Ditanyakan
Bagaimana cara saya mengubah antara hex dan biner dengan cepat?
Setiap digit hex setara dengan 4 bit biner: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000, 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111. Untuk mengubah 0xB7: B=1011, 7=0111 → 10110111₂. Untuk mengubah 11001010₂: pisahkan menjadi nibbles: 1100=C, 1010=A → 0xCA.
Mengapa CSS menggunakan hexadecimal?
CSS menggunakan hex karena setiap saluran RGB (0-255) pas dengan tepat dalam 2 digit hex (00-FF). Format #RRGGBB kompak, tidak ambigu, dan menerjemahkan langsung ke model warna 24-bit yang digunakan oleh perangkat display. HTML menerima warna hex pada awal tahun 1990-an dari definisi warna X11, dan konvensi ini telah menjadi standar sejak itu.
Apakah 0xFF sama dengan apa dalam desimal?
0xFF = 15×16 + 15 = 240 + 15 = 255. Dalam biner, FF = 1111 1111, berarti semua 8 bit diatur. 255 adalah nilai maksimum dari byte tidak tanda (uint8), nilai maksimum intensitas untuk setiap saluran warna RGB, dan muncul secara terus-menerus dalam jaringan (255.255.255.255 adalah alamat siaran) dan komputasi.
Apakah perbedaan antara 0x1F dan 0xF1?
Ini adalah bilangan yang berbeda dengan digit yang sama dalam urutan yang berbeda. 0x1F = 1×16 + 15 = 31 desimal. 0xF1 = 15×16 + 1 = 241 desimal. Dalam biner: 0x1F = 0001 1111; 0xF1 = 1111 0001. Nilai posisi yang berbeda, seperti 19 ≠ 91 dalam desimal.
Berapa digit hex yang saya butuhkan untuk mewakili bilangan 32-bit?
8 digit hex tepat (karena 16⁸ = 2³², menutup semua nilai 32-bit dari 0x00000000 hingga 0xFFFFFFFF). Alamat memori pada sistem 32-bit ditampilkan sebagai 8 digit hex. Untuk bilangan 64-bit, Anda membutuhkan 16 digit hex (0x0000000000000000 hingga 0xFFFFFFFFFFFFFFFF).
Apakah prefix "0x" berarti apa dalam bilangan hex?
Prefix "0x" adalah konvensi notasi yang digunakan dalam C dan kebanyakan bahasa pemrograman untuk menunjukkan bahwa bilangan yang mengikuti adalah hexadecimal. "0x" berarti "hex" (huruf 'x' menunjukkan hexadecimal). Notasi lain: akhir 'h' dalam assembly (FFh), awal '#' dalam CSS dan beberapa konteks (#FF0000), dan prefix $ dalam beberapa bahasa yang lebih tua ($FF).
Bagaimana hex digunakan dalam alamat IP?
Alamat IPv4 (misalnya, 192.168.1.1) dapat ditulis dalam hex: setiap oktet dalam hex. 192.168.1.1 = 0xC0 0xA8 0x01 0x01 = 0xC0A80101. Alamat IPv6 sudah ditulis dalam hex: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Ini membuat manipulasi alamat IPv6 jauh lebih mudah dengan aritmatika hex.
Apakah hex editor dan kapan saya akan menggunakan satu?
Hex editor menampilkan dan mengedit file sebagai byte-raw dalam hexadecimal. Penggunaan umum: meninjau tanda tandatangan file untuk mengidentifikasi jenis file, mengedit file penyimpanan game biner, mengembangkan ulang perangkat lunak, menganalisis tangkapan jaringan, mengembalikan data dari file yang rusak, dan forensik digital. Hex editor populer termasuk HxD (Windows), hex fiend (Mac), dan xxd (alat baris perintah Unix).
Mengapa hexadecimal digunakan daripada desimal dalam komputasi?
Karena komputer beroperasi dalam biner (basis 2), dan 16 = 2⁴ — hex sesuai dengan sempurna dengan biner. Satu digit hex = 4 bit, dua digit hex = 1 byte (8 bit), empat digit hex = 16 bit, delapan digit hex = 32 bit. Desimal tidak memiliki korespondensi yang sama dengan kuadrat dari 2, membuat hex jauh lebih alami untuk mengekspresikan data biner dengan kompak.
Bagaimana saya mengubah warna hex ke nilai RGB?
Pisahkan warna hex 6 digit menjadi tiga kelompok 2 digit: #RRGGBB. Konversi masing-masing dari hex ke desimal. Contoh: #4A90E2 → R=0x4A=74, G=0x90=144, B=0xE2=226. Jadi warna ini adalah rgb(74, 144, 226) — biru sedang. Untuk mengembalikan: konversi nilai desimal ke 2 digit hex dan gabungkan: rgb(255, 87, 51) → #FF5733.
Hexadecimal dalam Jaringan dan Protokol
Jaringan komputer menggunakan hexadecimal secara luas. Alamat MAC — identifikasi perangkat keras untuk antarmuka jaringan — ditulis sebagai 6 byte hex yang dipisahkan oleh titik dua atau tanda hubung: misalnya, 00:1A:2B:3C:4D:5E. Tiga byte pertama (00:1A:2B) mengidentifikasi produsen (Identifikasi Unik Organisasi, OUI), sedangkan tiga byte terakhir (3C:4D:5E) mengidentifikasi perangkat khusus.
Alamat IPv6 adalah 128 bit yang diekspresikan sebagai 8 kelompok 4 digit hex: 2001:0DB8:AC10:FE01:0000:0000:0000:0000. Nol awal dalam kelompok dapat dihilangkan dan kelompok nol berurutan dapat dikompresi dengan "::", sehingga 2001:DB8:AC10:FE01::. Memahami hex sangat penting untuk membaca alamat IPv6, masker subnet, dan tabel routing.
Frame Ethernet, paket IP, segment TCP — semua memiliki bidang yang diekspresikan dalam hex dalam alat analisis jaringan seperti Wireshark. Paket SYN TCP menampilkan bidang flag sebagai 0x002 (hanya bit SYN yang aktif); paket SYN-ACK menampilkan 0x012 (bit SYN + ACK aktif). Membaca nilai hex secara langsung dari rekaman paket adalah keterampilan troubleshooting jaringan dasar.
Unicode dan Hex: Pengkodean Karakter
Unicode, standar pengkodean karakter universal, menetapkan setiap karakter kode titik kode yang diekspresikan dalam hex. Bidang Multilingual Dasar menjangkau U+0000 hingga U+FFFF. Contoh:
| Karakter | Kode Titik Unicode | Pengkodean UTF-8 (hex) | Deskripsi |
|---|---|---|---|
| A | U+0041 | 41 | Huruf kapital Latin A |
| α | U+03B1 | CE B1 | Huruf kecil Yunani alpha |
| € | U+20AC | E2 82 AC | Tanda euro |
| 中 | U+4E2D | E4 B8 AD | Karakter Cina "tengah" |
| 😀 | U+1F600 | F0 9F 98 80 | Wajah tersenyum emoji |
| © | U+00A9 | C2 A9 | Tanda hak cipta |
Pengkodean UTF-8 mengkodekan karakter ASCII (U+0000 hingga U+007F) dalam 1 byte identik dengan nilai ASCII-nya. Karakter U+0080 hingga U+07FF menggunakan 2 byte, U+0800 hingga U+FFFF menggunakan 3 byte, dan karakter di luar U+FFFF (seperti kebanyakan emoji) menggunakan 4 byte. Pengkodean variabel ini, semua yang diekspresikan dalam hex, adalah mengapa memahami hex membantu ketika debugging masalah pengkodean teks dalam aplikasi web.