Angka Base Konverter
Konversi antara biner, oktal, desimal, dan heksadesimal.
Memahami basis bilangan
Basis bilangan (atau radix) menentukan berapa banyak digit unik yang digunakan untuk merepresentasikan angka. Yang paling akrab adalah basis 10 (desimal), yang menggunakan digit 0-9. Komputer menggunakan basis 2 (biner) secara native, hanya dengan 0 dan 1.
- Biner (basis 2): digunakan secara internal oleh semua sistem digital. Setiap digit adalah "bit".
- Oktal (basis 8): menggunakan digit 0-7. Umum untuk izin file Unix (mis. chmod 755).
- Desimal (basis 10): sistem bilangan manusia standar.
- Heksadesimal (basis 16): menggunakan 0-9 dan A-F. Banyak digunakan untuk warna (#FF0000), alamat memori, dan representasi byte.
Pertanyaan umum
Apakah mendukung angka yang sangat besar?
Ya. Alat ini menggunakan BigInt JavaScript, yang mendukung integer berukuran sembarang tanpa kehilangan presisi. Anda dapat mengonversi angka dengan ratusan digit.
Mengapa biner penting dalam komputasi?
Komputer menggunakan sinyal listrik dengan dua status (on/off), yang secara alami sesuai dengan biner (1/0). Semua data · teks, gambar, video · pada akhirnya disimpan dan diproses dalam biner.
Cara kerja notasi posisional
Sistem angka posisional merepresentasikan angka menggunakan sekumpulan simbol digit berukuran tetap, di mana posisi setiap digit menentukan bobotnya. Bobot posisi i (dihitung dari kanan, dimulai dari nol) adalah base^i. Nilai angka adalah jumlah digit × base^i di semua posisi. String 352 dalam basis 10 berarti 3×100 + 5×10 + 2×1 = 352. String 1011 dalam basis 2 berarti 1×8 + 0×4 + 1×2 + 1×1 = 11 dalam desimal.
Notasi posisional adalah salah satu dari dua penemuan besar dalam representasi angka. Yang lainnya adalah non-posisional (angka Romawi, hieratik Mesir), di mana simbol memiliki nilai tetap terlepas dari posisi. Sistem posisional lebih kompak; sistem non-posisional tidak, angka 1.888 membutuhkan empat digit dalam desimal tetapi delapan karakter dalam Romawi: MDCCCLXXXVIII.
Sejarah singkat berbagai basis
Bangsa Babilonia menjalankan sistem posisional basis 60 (seksagesimal) setidaknya sejak periode Babilonia Kuno, sekitar 1900-1600 SM. Tablet tanah liat dari era itu sudah menggunakan notasi posisional. Mengapa 60? Ia memiliki jumlah pembagi kecil yang sangat tinggi (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60), yang membuat aritmetika pecahan lebih mudah di dunia pra-pecahan-desimal. Warisan Babilonia masih ada di saku Anda: waktu (60 detik dalam semenit, 60 menit dalam satu jam) dan sudut/koordinat geografis (360 derajat dalam lingkaran, 60 menit busur per derajat, 60 detik busur per menit) adalah keturunan langsungnya. Ketika Anda membaca jam atau garis lintang, Anda sedang membaca seksagesimal.
Sistem desimal posisional seperti yang kita kenal dikembangkan oleh matematikawan India pada abad-abad awal Masehi. Lompatan konseptual yang membedakannya dari papan hitung sebelumnya adalah simbol tertulis untuk nol sebagai penanda tempat. Penggunaan nol paling awal yang jelas dalam konteks posisional umumnya dikaitkan dengan Brahmagupta (628 M), yang risalahnya Brāhmasphuṭasiddhānta memberikan aturan aritmetika dengan nol. Manuskrip Bakhshali menunjukkan penggunaan bahkan lebih awal dari titik (bindu) sebagai penanda tempat.
Sistem desimal berpindah dari India ke dunia Islam pada abad ke-8 sampai ke-9, polymath Persia al-Khwārizmī menulis On the Calculation with Hindu Numerals sekitar tahun 825 M («algorithm» dan «algebra» adalah keturunan etimologi langsung dari nama dan judul bukunya). Eropa tertinggal. Leonardo dari Pisa, yang dikenal sebagai Fibonacci, secara resmi memperkenalkan angka Hindu-Arab ke Eropa Latin dalam Liber Abaci (1202), mendemonstrasikan keunggulannya atas angka Romawi. Angka Romawi bertahan dalam pembukuan Eropa hingga abad ke-16.
Gottfried Wilhelm Leibniz mendeskripsikan sistem bilangan biner penuh dalam makalah tahun 1703-nya Explication de l'arithmétique binaire: meskipun motivasi utamanya bersifat filosofis (korespondensi dengan I Ching) bukan praktis. Lompatan ke komputasi biner datang dengan tesis master Claude Shannon tahun 1937 di MIT, «A Symbolic Analysis of Relay and Switching Circuits,» yang menunjukkan aljabar Boolean dapat memodelkan jaringan relai listrik, menjadikan biner bahasa alami logika digital.
Algoritma konversi
Desimal ke basis lain, pembagian berulang. Untuk mengonversi bilangan bulat desimal N ke basis b, bagi N dengan b, catat sisa, ganti N dengan hasil bagi, dan ulangi hingga hasil bagi adalah 0. Sisa-sisa yang dibaca dari bawah ke atas adalah digit dalam basis b. Contoh untuk 156 ke biner: 156÷2 = 78 sisa 0, 78÷2 = 39 sisa 0, 39÷2 = 19 sisa 1, 19÷2 = 9 sisa 1, 9÷2 = 4 sisa 1, 4÷2 = 2 sisa 0, 2÷2 = 1 sisa 0, 1÷2 = 0 sisa 1, membaca sisa dari bawah ke atas: 10011100. Verifikasi: 128 + 16 + 8 + 4 = 156.
Basis lain ke desimal, metode Horner. Mulai dengan 0; untuk setiap digit dari kiri ke kanan, kalikan total berjalan dengan basis dan tambahkan digit baru. Contoh untuk hex 1F4: 0×16 + 1 = 1, kemudian 1×16 + 15 = 31, kemudian 31×16 + 4 = 500.
Kedua algoritma berjalan dalam waktu linier relatif terhadap jumlah digit, dan BigInt JavaScript mengimplementasikannya di balik layar, itulah mengapa alat ini tidak memiliki batas presisi. Angka 200-digit dikonversi dengan bersih antara dua basis mana pun tanpa kehilangan pembulatan, sama seperti kalkulator dengan aritmetika bilangan bulat presisi-arbitrer.
Empat basis yang penting dalam komputasi
- Biner (basis 2): transistor menyala atau mati, sehingga biner adalah representasi alami untuk logika digital. Setiap data, pada akhirnya, adalah biner.
- Oktal (basis 8): secara historis umum dalam komputasi awal karena 3 digit biner dipetakan dengan bersih ke 1 digit oktal. Kurang menonjol saat ini tetapi masih digunakan dalam izin file Unix (
chmod 755) dan beberapa format file lama. - Desimal (basis 10): sistem angka manusia sehari-hari, hampir pasti karena kita memiliki sepuluh jari. Digunakan oleh sistem keuangan, sains, di mana pun manusia membaca angka.
- Heksadesimal (basis 16): tepat 4 bit per digit, artinya 1 byte = 2 karakter hex. Standar de facto untuk representasi tingkat byte yang kompak: kode warna hex (
#FF0000), alamat memori (0x7fff...), code point Unicode (U+1F600), alamat MAC, intisari hash.
Pangkat 2 yang perlu dihafal
| Pangkat | Desimal | Hex | Mengapa penting |
|---|---|---|---|
| 2⁸ | 256 | 0x100 | Satu byte; nilai maksimum saluran 8-bit (RGB) |
| 2¹⁰ | 1,024 | 0x400 | «1K» dalam konteks komputasi |
| 2¹⁶ | 65,536 | 0x10000 | Ukuran BMP UTF-16; maks bilangan bulat 16-bit |
| 2²⁰ | 1,048,576 | 0x100000 | «1M» dalam konteks komputasi |
| 2²⁴ | 16,777,216 | 0x1000000 | RGB 24-bit («16,7 juta warna») |
| 2³² | ~4,3 miliar | 0x100000000 | Maks bilangan bulat tak-bertanda 32-bit; ruang alamat IPv4 |
| 2⁶⁴ | ~1.8×10¹⁹ | 0x100… | Maks bilangan bulat 64-bit; jauh melampaui presisi floating-point |
Kapan Anda menggunakan konverter basis
- Membaca dump hex dari debugger, penangkapan paket jaringan, atau file biner. Menerjemahkan
0xFFke 255 dalam kepala itu mudah;0x7F4Abiasanya tidak. - Kode warna CSS:
#FF0000adalah desimal (255, 0, 0). Konversi hex-ke-RGB adalah tepat basis 16 → basis 10 pada setiap pasangan dua karakter. - Izin file Unix:
chmod 755adalah oktal: 7 = rwx (baca+tulis+eksekusi = 4+2+1), 5 = r-x (baca+eksekusi = 4+1), 5 lagi. Setiap digit oktal adalah tepat 3 bit biner. - Oktet IPv4: alamat seperti
192.168.1.1adalah empat angka 8-bit. Subnet mask lebih mudah dipahami dalam biner (mask/24adalah 24 bit satu diikuti 8 nol). - Code point Unicode: karakter dikatalogkan dalam hex (U+2665 untuk ♥, U+1F600 untuk 😀). Ekuivalen desimal ada tetapi bentuk hex sesuai dengan tabel Unicode.
- Aritmetika bitmask: flag fitur, bit izin, nilai register perangkat keras semuanya lebih mudah dibaca sebagai biner atau hex daripada desimal.
- Men-debug kode assembly atau yang di-disassemble: alamat, opcode, dan nilai immediate secara konvensional ditulis dalam hex.
Basis lain yang perlu diketahui
- Basis 36: basis tertinggi yang cocok dalam alfanumerik tanpa karakter khusus (10 digit + 26 huruf). Digunakan untuk hash URL pendek dan beberapa skema pengkodean.
Number.toString(36)JavaScript mengeksposnya secara langsung. - Basis 58: digunakan dalam alamat Bitcoin dan Ripple. Melewati karakter yang mudah tertukar:
0(nol),O(huruf besar O),I(huruf besar I), danl(huruf kecil L) sehingga alamat tahan terhadap kesalahan transkripsi tulisan tangan. - Basis 62: alfanumerik penuh (digit + huruf kecil + huruf besar). Umum dalam slug URL shortener (bagian «abc123» dalam
example.com/abc123). - Basis 64: mengkodekan data biner sebagai ASCII yang dapat dicetak untuk transport melalui saluran teks-saja (email, JSON, URL). Ruang lingkup berbeda dari alat ini, ia beroperasi pada aliran byte bukan bilangan bulat.
Konvensi awalan kode sumber
Sebagian besar bahasa modern menggunakan sekumpulan awalan literal yang sama untuk membedakan basis dalam kode sumber:
- Biner:
0batau0B(Python, Ruby, Java sejak 7, C++ sejak C++14, JavaScript sejak ES6, Rust). Contoh:0b10011100. - Oktal:
0oatau0O(Python 3, ES6, Rust). Bahasa keluarga C lama menggunakan angka nol di awal (0755), yang kadang menjadi jebakan jika Anda secara tidak sengaja memberi padding desimal dengan nol. - Hex:
0xatau0X: dipahami secara universal di hampir setiap bahasa pemrograman. - Desimal: tidak perlu awalan.
Pertanyaan lainnya
Bagaimana dengan bilangan negatif?
Komputer merepresentasikan bilangan bulat negatif menggunakan komplemen dua: balik semua bit dan tambahkan 1. Jadi dalam komplemen dua 8-bit, −1 adalah 11111111 (0xFF), −5 adalah 11111011 (0xFB), dan −128 adalah 10000000 (0x80). Bit paling signifikan menunjukkan tanda. Alat ini menampilkan bilangan bulat negatif dengan tanda minus di depan daripada representasi komplemen dua, karena yang terakhir hanya masuk akal pada lebar bit tetap, dan karena alat menggunakan BigInt presisi-arbitrer, tidak ada lebar tetap untuk ditafsirkan.
Mengapa hex menggunakan huruf A-F?
Karena basis 16 membutuhkan 16 simbol digit yang berbeda dan digit desimal 0-9 hanya menyediakan sepuluh. Konvensi penggunaan A-F (tidak peka huruf besar-kecil) untuk 10-15 dipopulerkan oleh IBM System/360 pada tahun 1960-an dan distandarisasi di seluruh industri. Sistem sebelumnya bereksperimen dengan glyph lain (G-15 Bendix menggunakan u, v, w, x, y, z) tetapi A-F menang.
Bisakah alat ini menangani pecahan?
Tidak, ini hanya untuk bilangan bulat. Konversi basis fraksional lebih kompleks karena sebagian besar pecahan desimal tidak memiliki representasi tepat dalam biner (masalah floating-point terkenal 0.1 + 0.2 ≠ 0.3). Untuk inspeksi tingkat bit floating-point, visualiser IEEE 754 khusus adalah alat yang tepat.
Apakah ada yang dikirim ke server?
Tidak. Konversi berjalan di browser Anda menggunakan aritmetika BigInt native JavaScript. Tidak ada yang berkaitan dengan input Anda yang meninggalkan halaman; alat berfungsi secara offline setelah dimuat.