Panduan Konversi Basis Bilangan: Biner, Heksadesimal, Oktal Dijelaskan
Jika Anda pernah menatap kode warna hex seperti #1A2B3C atau izin Unix seperti chmod 755 dan bertanya-tanya dari mana angka-angka itu berasal, Anda tidak sendirian. Basis bilangan adalah salah satu konsep dasar yang digunakan sebagian besar developer setiap hari tanpa berpikir dua kali โ sampai saat mereka benar-benar perlu mengonversi antar basis.
Mari kita perbaiki itu. Panduan ini membahas sistem bilangan yang penting dalam pemrograman, cara mengonversi antar sistem tersebut, dan kapan masing-masing muncul dalam praktik.
Apa Sebenarnya Arti "Basis"?
Kita menghitung dalam basis-10 (desimal) karena kita memiliki sepuluh jari. Setiap posisi digit mewakili pangkat dari 10:
4 2 7
| | |
| | โโโ 7 ร 10โฐ = 7
| โโโโโโโ 2 ร 10ยน = 20
โโโโโโโโโโโ 4 ร 10ยฒ = 400
โโโ
Total = 427
Itulah notasi posisional. "Basis" (juga disebut radiks) memberi tahu Anda berapa banyak digit unik yang ada dalam sistem dan berapa pengali di setiap posisi. Basis-10 memiliki digit 0โ9. Basis-2 memiliki digit 0โ1. Basis-16 memiliki digit 0โ9 dan AโF.
Konsepnya identik di semua basis โ hanya jumlah simbol yang tersedia dan pengali per posisi yang berubah.
Fakta menarik: bangsa Babilonia menggunakan basis-60 (seksagesimal). Itulah mengapa kita memiliki 60 detik dalam satu menit dan 360 derajat dalam lingkaran.
Biner (Basis-2): Bahasa Perangkat Keras
Mengapa Komputer Menggunakan Biner
Komputer berjalan dengan transistor, dan transistor memiliki dua keadaan yang andal: menyala dan mati. Hal itu memetakan sempurna ke 1 dan 0. Secara teori Anda bisa membangun komputer basis-3, tetapi membedakan antara tiga level tegangan lebih sulit dan lebih rentan kesalahan daripada membedakan antara dua. Biner menang karena sederhana dan tangguh.
Membaca Bilangan Biner
Biner bekerja sama seperti desimal, tetapi setiap posisi mewakili pangkat dari 2:
1 0 1 1 0 1
| | | | | |
| | | | | โโโ 1 ร 2โฐ = 1
| | | | โโโโโโโ 0 ร 2ยน = 0
| | | โโโโโโโโโโโ 1 ร 2ยฒ = 4
| | โโโโโโโโโโโโโโโ 1 ร 2ยณ = 8
| โโโโโโโโโโโโโโโโโโโ 0 ร 2โด = 0
โโโโโโโโโโโโโโโโโโโโโโโ 1 ร 2โต = 32
โโ
Total = 45
Jadi 101101 dalam biner sama dengan 45 dalam desimal. Anda membacanya dari kanan ke kiri, menggandakan nilai tempat setiap kali: 1, 2, 4, 8, 16, 32, 64, 128...
Bit, Nibble, Byte, dan Seterusnya
- Bit: satu digit biner tunggal (0 atau 1)
- Nibble: 4 bit (mewakili satu digit hex, nilai 0โ15)
- Byte: 8 bit (nilai 0โ255)
- Kilobyte: 1.024 byte (2ยนโฐ)
Satu byte dapat mewakili 256 nilai berbeda, itulah mengapa karakter ASCII muat dalam satu byte dan kanal warna RGB berkisar dari 0 sampai 255.
Dasar-Dasar Aritmetika Biner
Penjumlahan dalam biner mengikuti aturan yang sama seperti desimal, tetapi Anda menyimpan pada 2 alih-alih 10:
1 0 1 1 (11 in decimal)
+ 0 1 1 0 ( 6 in decimal)
โโโโโโโโโ
1 0 0 0 1 (17 in decimal)
Ketika 1 + 1 = 10 dalam biner (sama seperti 9 + 1 = 10 dalam desimal), Anda menulis 0 dan menyimpan 1.
Oktal (Basis-8): Sistem Warisan
Sejarah Singkat
Oktal populer pada tahun 1960-an dan 70-an dengan mesin seperti PDP-8 yang menggunakan word 12-bit โ dapat dibagi dengan rapi menjadi empat kelompok tiga bit. Setiap digit oktal memetakan ke tepat tiga digit biner, menjadikannya singkatan yang praktis.
Di Mana Anda Masih Menjumpai Oktal
Tempat paling umum saat ini adalah izin file Unix. Ketika Anda mengetik chmod 755 script.sh, setiap digit adalah bilangan oktal yang mewakili izin baca (4), tulis (2), dan eksekusi (1):
7 = 4 + 2 + 1 = rwx (owner: read, write, execute)
5 = 4 + 0 + 1 = r-x (group: read, execute)
5 = 4 + 0 + 1 = r-x (others: read, execute)
Digit oktal dalam pemrograman menggunakan awalan 0o (atau hanya angka nol di depan dalam C, yang telah menyebabkan banyak bug):
const permissions = 0o755; // 493 in decimal
console.log(permissions.toString(8)); // "755"
Hati-hati di JavaScript dan Python: angka nol di depan seperti 0755 mungkin ditafsirkan sebagai oktal dalam beberapa konteks. Selalu gunakan awalan 0o secara eksplisit untuk menghindari ambiguitas.
Heksadesimal (Basis-16): Favorit Para Developer
Mengapa Hex Ada
Heksadesimal memecahkan masalah praktis: bilangan biner cepat menjadi panjang. Bilangan desimal 255 adalah 11111111 dalam biner โ delapan digit. Dalam hex, itu hanya FF. Setiap digit hex memetakan ke tepat empat digit biner (satu nibble), membuat konversi menjadi sepele dan menjaga bilangan tetap ringkas.
Hex menggunakan digit 0โ9 ditambah huruf AโF:
| Desimal | Biner | Hex |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 15 | 1111 | F |
Hex di Dunia Nyata
Warna web adalah penggunaan hex yang paling terlihat. #FF5733 diuraikan menjadi:
#FF5733
โโโโโโ
โโโโโโโโ Blue: 0x33 = 51
โโโโโโโโ Green: 0x57 = 87
โโโโโโโโ Red: 0xFF = 255
Alamat memori di debugger ditampilkan dalam hex: 0x7FFF5FBFFA10 lebih mudah dibaca dibandingkan padanan desimalnya yaitu 140.734.799.804.944.
Alamat MAC menggunakan pasangan hex yang dipisahkan titik dua: A4:83:E7:2B:00:1F.
Warna di CSS: rgba(255, 87, 51, 1.0) dan #FF5733 mewakili warna yang sama โ hex hanya lebih ringkas.
Mengonversi Antar Basis
Desimal ke Biner
Bagi berulang kali dengan 2 dan kumpulkan sisa baginya, baca dari bawah ke atas:
45 รท 2 = 22 remainder 1 โ
22 รท 2 = 11 remainder 0 โ
11 รท 2 = 5 remainder 1 โ Read upward:
5 รท 2 = 2 remainder 1 โ 101101
2 รท 2 = 1 remainder 0 โ
1 รท 2 = 0 remainder 1 โ
Hasil: 45 dalam desimal = 101101 dalam biner.
Desimal ke Heksadesimal
Pendekatan yang sama, tetapi bagi dengan 16:
427 รท 16 = 26 remainder 11 (B) โ
26 รท 16 = 1 remainder 10 (A) โ Read upward: 1AB
1 รท 16 = 0 remainder 1 โ
Hasil: 427 dalam desimal = 1AB dalam hex.
Biner ke Hex (Yang Paling Mudah)
Kelompokkan digit biner menjadi set empat (dari kanan ke kiri), lalu konversi setiap kelompok:
Binary: 10 1101
Padded: 0010 1101
Groups: 2 D
Result: 0x2D
Verifikasi: 0x2D = 2ร16 + 13 = 45 โ
Hex ke Biner
Balikkan prosesnya. Uraikan setiap digit hex menjadi empat digit biner:
Hex: F A 3
Binary: 1111 1010 0011
Result: 111110100011
Tips: hafalkan pola biner untuk 0โF (hanya ada 16). Setelah Anda menguasainya, konversi hexโbiner bisa dilakukan seketika di kepala. Mulailah dengan pangkat dua: 1=0001, 2=0010, 4=0100, 8=1000.
Notasi Basis Bilangan dalam Bahasa Pemrograman
Setiap bahasa pemrograman utama memiliki sintaks untuk menulis bilangan dalam basis yang berbeda:
// JavaScript
const binary = 0b101101; // 45
const octal = 0o55; // 45
const hex = 0x2D; // 45
const decimal = 45; // 45
(45).toString(2); // "101101"
(45).toString(8); // "55"
(45).toString(16); // "2d"
parseInt("101101", 2); // 45
parseInt("55", 8); // 45
parseInt("2D", 16); // 45
# Python
binary = 0b101101 # 45
octal = 0o55 # 45
hexval = 0x2D # 45
bin(45) # '0b101101'
oct(45) # '0o55'
hex(45) # '0x2d'
int("101101", 2) # 45
int("55", 8) # 45
int("2D", 16) # 45
// C / C++
int binary = 0b101101; // 45 (C23 / GCC extension)
int octal = 055; // 45 (leading zero = octal!)
int hex = 0x2D; // 45
Perhatikan jebakan di C: angka nol di depan berarti oktal. Menulis int x = 010; memberikan Anda 8, bukan 10. Hal ini telah menjebak banyak programmer.
Kasus Penggunaan Praktis
Operasi Bitwise dan Flag
const READ = 0x01; // 0001
const WRITE = 0x02; // 0010
const EXECUTE = 0x04; // 0100
const ADMIN = 0x08; // 1000
let permissions = READ | WRITE; // 0x03 = 0011
if (permissions & EXECUTE) {
// check if execute bit is set
}
Debugging dan Inspeksi Memori
Ketika Anda melihat segfault di alamat 0xDEADBEEF atau menginisialisasi memori dengan 0xCAFEBABE, itu adalah konstanta hex yang dipilih khusus karena mudah dikenali dalam dump memori. File class Java dimulai dengan magic number 0xCAFEBABE โ dan ya, seseorang bersenang-senang saat memberi nama itu.
Protokol Jaringan
Alamat IPv6 menggunakan notasi hex: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Alamat MAC, ID vendor USB, dan UUID Bluetooth semuanya menggunakan representasi hex karena menjaga data biner tetap ringkas dan mudah dibaca.
Coba Sendiri
Lewati perhitungan manual. Konverter Basis Bilangan kami menangani konversi antar basis apa pun secara instan โ desimal, biner, oktal, hex, atau basis kustom apa pun hingga 36. Tempel angka, pilih basis sumber dan target, lalu dapatkan hasilnya segera. Semuanya berjalan di browser Anda, jadi tidak ada yang dikirim ke server.
Alat ini sangat berguna ketika Anda perlu:
- Men-debug dump memori hex dengan mengonversi ke desimal
- Menghitung izin Unix dalam biner/oktal
- Memverifikasi kode warna antara hex dan nilai RGB
- Mengonversi antar basis yang bukan pangkat dua
Sumber Daya Terkait
- Penjelasan Encoding Base64 โ Base64 menggunakan pendekatan berbeda (kelompok 6-bit yang dipetakan ke 64 karakter) untuk mengenkode biner sebagai teks
- Perbandingan Algoritma Hash โ output hash biasanya ditampilkan dalam heksadesimal
- Konverter Basis Bilangan โ konversi antar basis apa pun secara instan di browser Anda
๐ ๏ธ Coba sekarang: Konverter Basis Bilangan โ konversi antara biner, oktal, desimal, hex, dan basis apa pun hingga 36. 100% sisi klien, sepenuhnya gratis.