Dalam satu kalimat
Konversi basis bilangan adalah seni menerjemahkan angka dari satu sistem hitung (seperti desimal 10 digit yang kita kenal) ke sistem lain (seperti biner 2 digit bawaan komputer), tanpa mengubah nilainya.
Masalah yang diselesaikan
Manusia, pada umumnya, punya sepuluh jari. Perangkat keras biologis ini membuat berhitung dalam kelompok sepuluh—sistem desimal atau basis-10—terasa sangat alami. Kita punya sepuluh simbol unik (0 sampai 9), dan begitu kita mentok di sembilan, kita "putar balik": kita tambahkan digit baru di sebelah kiri dan mulai lagi dari nol. Sepuluh adalah 10, seratus adalah 100, dan seterusnya. Gampang, kan.
Komputer, di sisi lain, punya "jari" yang berbeda. Perangkat keras fundamentalnya adalah transistor, sebuah saklar mikroskopis yang bisa dalam keadaan on (nyala) atau off (mati). Cuma itu. Dua keadaan. Hal ini membuat sistem dua simbol—biner atau basis-2—menjadi bahasa asli komputer. Kedua simbol itu adalah 0 (off) dan 1 (on).
Ini menciptakan masalah penerjemahan. Bagi komputer, angka manusia 237 itu tidak ada artinya. Angka itu perlu direpresentasikan sebagai serangkaian kondisi on dan off. Angka yang sama, 237, dalam biner adalah 11101101.
Meskipun komputer fasih berbahasa biner, manusia... tidak. Membaca deretan panjang angka satu dan nol adalah resep jitu bikin pusing dan mata jereng. Untuk menjembatani kesenjangan ini, para developer menciptakan singkatan yang lebih nyaman: oktal (basis-8) dan heksadesimal (basis-16). Basis-basis "pangkat dua" ini sangat mudah dikonversi ke dan dari biner, tapi mereka memadatkan string biner yang panjang menjadi potongan yang jauh lebih mudah dibaca.
Basis bilangan ada untuk menyelesaikan ketidakcocokan mendasar antara cara manusia berpikir tentang angka dan cara mesin menyimpannya secara fisik. Mereka adalah batu Rosetta yang memungkinkan kita mengintip isi pikiran mesin tanpa tersesat di lautan angka satu dan nol.
Dapur pacunya
Keajaiban di balik setiap basis bilangan adalah konsep yang disebut notasi posisional. Posisi sebuah digit menentukan nilainya. Mari kita bedah.
Jadi, apa itu "basis"?
Bayangkan odometer mobilmu. Ketika digit paling kanan berubah dari 9 ke 0, digit di sebelah kirinya naik satu angka. Setiap "tempat" digit mewakili pangkat dari sepuluh.
Angka 427 dalam sistem basis-10 kita sehari-hari sebenarnya berarti:
4ratusan (4 × 10²)2puluhan (2 × 10¹)7satuan (7 × 10⁰)
Jumlahkan semuanya: 400 + 20 + 7 = 427.
"Basis" hanyalah angka yang kita pangkatkan untuk setiap posisi. Untuk basis-10, basisnya adalah 10. Untuk biner (basis-2), basisnya 2. Untuk heksadesimal (basis-16), basisnya 16. Rumusnya sama, hanya basisnya (b) yang berubah:
... + (digit × b²) + (digit × b¹) + (digit × b⁰)
Dari dunia kita (Desimal) ke dunia mereka (Basis Apapun)
Mari kita ubah angka desimal 427 ke biner (basis-2). Algoritmanya adalah "terus-menerus bagi dengan basis tujuan dan catat sisanya."
| Pembagian | Hasil | Sisa |
|---|---|---|
| 427 ÷ 2 | 213 | 1 |
| 213 ÷ 2 | 106 | 1 |
| 106 ÷ 2 | 53 | 0 |
| 53 ÷ 2 | 26 | 1 |
| 26 ÷ 2 | 13 | 0 |
| 13 ÷ 2 | 6 | 1 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 |
Sekarang, baca sisa pembagian dari bawah ke atas.
Jadi, desimal 427 adalah biner 110101011.
Metode ini berlaku untuk basis apa pun. Untuk mengubah 427 ke heksadesimal (basis-16), kamu tinggal bagi dengan 16. (Catatan: Di basis-16, kita butuh lebih dari 10 simbol, jadi kita pakai A untuk 10, B untuk 11, ..., sampai F untuk 15).
427 ÷ 16 = 26dengan sisa11(yaituBdalam hex).26 ÷ 16 = 1dengan sisa10(yaituAdalam hex).1 ÷ 16 = 0dengan sisa1.
Membaca dari bawah ke atas memberi kita 1AB. Jadi, desimal 427 adalah 1AB dalam hex.
Dari dunia mereka (Basis Apapun) kembali ke dunia kita (Desimal)
Untuk melakukan sebaliknya, kita gunakan rumus notasi posisional yang kita lihat tadi. Mari ubah biner 110101011 kembali ke desimal. Kita kalikan setiap digit dengan 2 pangkat posisinya (mulai dari 0 di sebelah kanan).
1 * 2^8 = 256
+ 1 * 2^7 = 128
+ 0 * 2^6 = 0
+ 1 * 2^5 = 32
+ 0 * 2^4 = 0
+ 1 * 2^3 = 8
+ 0 * 2^2 = 0
+ 1 * 2^1 = 2
+ 1 * 2^0 = 1
----------------
Jumlah = 427
Berhasil! Mari kita coba dengan hex 1AB:
1 * 16^2 = 256
+ A * 16^1 = (10 * 16) = 160
+ B * 16^0 = (11 * 1) = 11
-------------------------
Jumlah = 427
Sip. Angkanya sama, cuma beda kostum.
Jalan Pintas Hex dan Oktal
Jadi, buat apa repot-repot pakai hex dan oktal? Karena mereka adalah basis "pangkat dua".
- Oktal adalah basis-8, dan 8 = 2³. Artinya, setiap satu digit oktal memetakan secara sempurna ke sekelompok tiga digit biner.
- Hex adalah basis-16, dan 16 = 2⁴. Artinya, setiap satu digit hex memetakan secara sempurna ke sekelompok empat digit biner (disebut "nibble").
Mari kita ambil angka biner yang besar: 1101011101001111
Untuk membacanya, manusia harus memindai setiap digit. Tapi untuk mengubahnya ke hex, kamu tinggal memecahnya menjadi kelompok-kelompok empat digit dari kanan:
1101 | 0111 | 0100 | 1111
Sekarang, ubah setiap kelompok:
1101adalah8+4+0+1 = 13, yaituD0111adalah0+4+2+1 = 70100adalah0+4+0+0 = 41111adalah8+4+2+1 = 15, yaituF
Jadi, 1101011101001111 hanyalah D74F dalam hex. Jauh lebih mudah dibaca dan nggak gampang salah. Ini bukan sekadar perhitungan; ini adalah transkripsi langsung. Inilah mengapa developer suka heksadesimal: ini adalah "pembungkus" data biner yang paling sempurna untuk dibaca manusia.
Cerita dari dunia nyata
Kasus Warna Misterius
Seorang developer front-end junior menerima mockup desain dari seorang desainer UI. Warna utama brand tercantum sebagai #E63946. Si developer tahu ini adalah salah satu nuansa merah, tapi seberapa merah? Dan bagaimana dengan warna lainnya? Dia memasukkan kode hex itu ke konverter. E63946 sebenarnya adalah tiga angka hex terpisah: E6 untuk Merah, 39 untuk Hijau, dan 46 untuk Biru.
E6dalam hex dikonversi menjadi230dalam desimal. Oke, jadi merahnya banyak banget (dari maksimal 255).39dalam hex dikonversi menjadi57dalam desimal. Sedikit hijau.46dalam hex dikonversi menjadi70dalam desimal. Sedikit biru.
Dengan memecah kode hex, developer tersebut memahami komposisi warna. Ini bukan sekadar "merah", tapi "sebagian besar merah, dengan sedikit hijau dan biru dalam jumlah yang mirip untuk membuatnya tidak terlalu mencolok."
Pelajaran: Heksadesimal adalah bahasa warna di web. Memahaminya membantumu lebih dari sekadar copy-paste kode dan benar-benar mengerti warna yang kamu gunakan.
Teka-teki Izin Akses File
Seorang sysadmin mencoba mengamankan skrip yang baru diunggah, deploy.sh, di server Linux. Dia ingin pemilik bisa membaca, menulis, dan mengeksekusinya, tetapi grup dan orang lain hanya bisa membaca dan mengeksekusinya. Dia sering melihat perintah chmod 755 deploy.sh digunakan di mana-mana, tapi selama ini dia hanya menganggapnya sebagai mantra ajaib.
Kali ini, dia mencarinya. Angka 755 adalah oktal. Ini mewakili tiga set izin: Owner (Pemilik), Group (Grup), dan Others (Lainnya).
- Izin Owner adalah
7. Dalam biner,7adalah111. - Izin Group adalah
5. Dalam biner,5adalah101. - Izin "Others" adalah
5. Dalam biner,5adalah101.
Setiap digit biner sesuai dengan izin tertentu: read (r), write (w), dan execute (x).
111berartirwx(Read, Write, Execute semuanya ON).101berartir-x(Read dan Execute ON, Write OFF).
Jadi, chmod 755 mengatur izin menjadi rwxr-xr-x, persis seperti yang dibutuhkan. Misteri terpecahkan.
Pelajaran: Oktal menyediakan singkatan super ringkas untuk mengelola izin file, yang pada dasarnya adalah sekumpulan flag on/off (bit).
Bug Gara-gara Bit yang Tertukar
Seorang developer yang membangun sistem embedded untuk termostat pintar perlu menyimpan pengaturan perangkat ke sepotong kecil memori. Untuk menghemat ruang, mereka menggunakan satu byte (8 bit) sebagai "flag register". Setiap bit mewakili sebuah pengaturan: isHeating, isCooling, fanOn, hasWifiConnection, dll.
Suatu hari, laporan bug membanjir: "Setiap kali saya menyalakan kipas, pemanas juga ikut menyala!" Si developer bingung. Kode untuk menyalakan kipas terlihat benar. Tapi ketika dia memeriksa byte pengaturan di memori, dia melihat masalahnya. Katakanlah kipas adalah bit ke-2 (nilai 2¹ = 2) dan pemanas adalah bit ke-3 (nilai 2² = 4). Kode seharusnya mengatur byte menjadi ...010 (kipas nyala). Sebaliknya, kode itu malah mengaturnya menjadi ...110 (kipas nyala DAN pemanas nyala). Nilai desimalnya menjadi 6 bukannya 2, yang tidak langsung terlihat jelas. Tapi melihat representasi binernya 00000110 membuat masalahnya sangat jelas: ada dua bit yang dinyalakan bukannya satu. Operasi bitwise yang salah adalah biang keladinya.
Pelajaran: Untuk pemrograman tingkat rendah, debugging memori, atau bekerja dengan register perangkat keras, berpikir dalam biner bukanlah pilihan—itu satu-satunya cara untuk melihat apa yang sebenarnya terjadi.
Kesalahan dan jebakan umum
- Lupa dengan prefiks. Di banyak bahasa pemrograman (seperti C, Java, atau JavaScript), angka yang dimulai dengan
0diartikan sebagai oktal.010bukan sepuluh, tapi delapan! Angka yang dimulai dengan0xadalah heksadesimal.0x10adalah enam belas. Tidak mengetahui ini bisa menyebabkan bug yang sangat aneh. - Tertukar antara
O/0danI/1. Ketika kamu menatap string hex atau biner yang panjang, matamu bisa jadi kabur dan salah mengira hurufOsebagai nol, atauIsebagai satu. Hex tidak menggunakanOatauI, tapi konversi basis lain mungkin saja, dan ini adalah kesalahan "salah pencet" yang klasik. - Menganggap ada standar untuk basis > 16. Karakter untuk biner (0-1), oktal (0-7), desimal (0-9), dan hex (0-9, A-F) sudah terstandarisasi. Tapi bagaimana dengan basis-22 atau basis-36? Sebagian besar sistem menggunakan
0-9diikuti olehA-Z, tapi itu bukan hukum universal. Selalu verifikasi set karakter (atau "alfabet") yang digunakan saat berurusan dengan basis yang kurang umum. - Mengabaikan batas integer. Angka hex 64-bit seperti
0x7FFFFFFFFFFFFFFFmewakili angka yang sangat besar. Jika kamu mencoba mengubahnya dan menyimpannya dalam variabel integer 32-bit standar di programmu, itu tidak akan muat. Ini akan menyebabkan "integer overflow," di mana angkanya berputar kembali menjadi nilai negatif atau menimbulkan error.
Kenapa Ini Penting Buat Kamu
Bahkan jika kamu bukan programmer C tingkat rendah, kamu bakal sering ketemu dengan basis bilangan yang berbeda. Kamu harus memikirkannya setiap kali kamu:
- Memilih warna di CSS atau dari alat desain (
#RRGGBB). - Berurusan dengan nilai hash seperti API key atau SHA commit Git, yang hampir selalu dalam format hex.
- Mengatur izin di server web (
chmod). - Bekerja dengan format data tingkat rendah, protokol jaringan, atau apa pun yang menggunakan bitmask (misalnya, feature flag).
- Menemukan kode error atau alamat memori di debugger.
- Mencoba memahami cara kerja komputer yang sebenarnya. Ini adalah konsep dasar yang membongkar banyak "sihir" di dunia digital.
Pelajari Lebih Lanjut
- Notasi Posisional (Wikipedia): Penjelasan akademis yang mendalam tentang teori di balik semua sistem basis bilangan.
- Heksadesimal (Wikipedia): Tinjauan bagus tentang basis-16, sejarahnya, dan penggunaannya yang umum dalam komputasi.
- **MDN Web Docs:
<color>: Panduan definitif bagi web developer tentang nilai warna CSS, termasuk penjelasan menyeluruh tentang notasi hex (#RRGGBB). - Halaman manual
chmod: Manual kanonis Linux untuk perintahchmod, yang merinci penggunaan oktal untuk mengatur izin file. - Operasi bitwise di JavaScript (MDN): Panduan praktis yang menunjukkan bagaimana manipulasi level bit dilakukan dalam bahasa tingkat tinggi, skenario umum untuk menerapkan pengetahuan basis-2.