edubun
Bahasa Indonesia

Byte, heksadesimal, dan teks

Huruf A disimpan sebagai 65, atau 01000001. Dalam UTF-8, satu suku kata Korea seperti U+D55C memakan tiga byte.

Teka-teki sehari-hari dulu. (Ini contoh rekaan.) Seorang siswa mengetik kata Korean dalam obrolan, enam huruf. Temannya mengetik kata yang sama dalam aksara Korea, yang terdiri atas tiga suku kata. Pesan mana yang lebih besar? Mungkin bukan yang kamu tebak. Disimpan sebagai UTF-8, keenam huruf Inggris itu 6 byte. Ketiga suku kata Korea itu 9 byte, masing-masing tiga. RFC 3629, standar yang mendefinisikan UTF-8, memakai kata ini sebagai salah satu contohnya dan merinci byte-nya: ED 95 9C EA B5 AD EC 96 B4. Ada dua hal yang menjelaskan selisih itu. Kamu perlu cara singkat untuk menulis byte, dan kamu perlu kesepakatan yang mengubah huruf menjadi bilangan.

Dua digit heksa untuk setiap byte

Pasangan huruf dan angka itu adalah heksadesimal, atau heksa. Deretan panjang 0 dan 1 sulit dibaca, jadi programmer memakai singkatan ini. Heksa punya enam belas digit: 0 sampai 9, lalu A sampai F untuk sepuluh sampai lima belas. Satu digit heksa mewakili tepat empat bit, jadi satu byte selalu dua digit heksa. Pisahkan 01000001 menjadi 0100 dan 0001. Keduanya 4 dan 1, jadi byte itu 0x41, dengan 0x hanya berarti "ini heksa". Dalam desimal nilainya 4 × 16 + 1 = 65.

Kamu mungkin sudah bertemu heksa tanpa sadar. Warna di halaman web sering ditulis sebagai #RRGGBB, satu byte masing-masing untuk cahaya merah, hijau, dan biru (MDN). #FF0000 adalah merah penuh: 255 di byte pertama, 0 di dua byte lainnya. #FFFFFF adalah putih. Byte terbesar, 11111111, adalah 0xFF, dan 0xFF = 15 × 16 + 15 = 255.

A bernilai 65 karena semua orang sepakat begitu

Komputer tidak tahu apa itu huruf. Komputer menyimpan bilangan, dan semua orang sepakat sejak awal bilangan mana yang mewakili huruf mana. Kesepakatan yang dipakai di jaringan awal adalah ASCII, dan RFC 20 menetapkannya untuk ARPANET pada tahun 1969. ASCII memakai 7 bit, jadi punya 128 kode. Huruf kapital A adalah 65, B adalah 66, dan seterusnya sampai Z di 90. Huruf kecil a adalah 97. Itu tepat 32 lebih besar daripada A, selisih satu bit saja. Angka juga punya kode. Karakter 0 adalah 48, jadi karakter "7" disimpan sebagai 55, bukan sebagai bilangan 7.

Memuat

Seret untuk memutar. Gulir atau cubit untuk memperbesar.

Sakelar menampilkan 01000001, huruf A. Pilih huruf lain dari menu untuk melihat polanya, atau balik sakelar 32 untuk berpindah antara huruf kapital dan huruf kecil.

Mengapa satu suku kata Korea butuh tiga byte

128 kode sudah banyak untuk bahasa Inggris, tetapi jauh dari cukup untuk bahasa Korea, Arab, Tionghoa, atau emoji. Unicode memberi setiap karakter dalam sistem tulisan dunia nomornya sendiri, yang disebut titik kode (code point), sampai U+10FFFF. UTF-8 (RFC 3629) adalah cara paling umum untuk mengubah nomor itu menjadi byte, dengan satu sampai empat byte per karakter. Ke-128 karakter ASCII tetap memakai kode satu byte yang lama, jadi teks bahasa Inggris biasa sama persis dalam ASCII dan UTF-8. Tabel di RFC itu menempatkan setiap titik kode dari U+0800 sampai U+FFFF di baris tiga byte, dan suku kata Korea berada di rentang itu. Huruf beraksen é memakan dua byte, suku kata Korea seperti U+D55C memakan tiga, dan emoji seperti 😀 memakan empat. Byte pertama bahkan memberi tahu panjangnya. ED adalah 11101101, dan tiga angka 1 di depannya menyatakan bahwa karakter ini panjangnya tiga byte.

KarakterTitik kodeByte UTF-8 (heksa)Byte
AU+0041411
aU+0061611
éU+00E9C3 A92
Suku kata Korea (U+D55C)U+D55CED 95 9C3
😀U+1F600F0 9F 98 804

Teks kacau adalah byte yang benar dibaca dengan kesepakatan yang salah

File teks biasa hanyalah byte-byte ini berderet, tidak lebih. Kata Hello yang disimpan sebagai UTF-8 berukuran lima byte: 48 65 6C 6C 6F dalam heksa, atau 72, 101, 108, 108, 111 dalam desimal. Kedua huruf l adalah byte yang sama dua kali. Sekarang buka file itu, atau file berbahasa Korea, dengan kesepakatan yang salah, misalnya pengodean lama Korea atau Jepang alih-alih UTF-8. Program membaca byte yang sama persis sebagai karakter yang berbeda. Tidak ada yang rusak di dalam file, dan membukanya lagi sebagai UTF-8 mengembalikan teksnya.

Ke mana perginya 34 GB yang hilang

Karena 2 pangkat 10 adalah 1024, mendekati 1000, orang lama memakai "kilobyte" untuk keduanya. Pada Desember 1998 IEC menyetujui nama terpisah, dan NIST mencantumkannya: 1 kB adalah 1000 byte, tetapi 1 KiB, kibibyte, adalah 1024 byte; 1 MB adalah 1 000 000 byte, tetapi 1 MiB adalah 1 048 576 byte. Produsen drive menghitung dengan pangkat sepuluh. Drive yang dijual sebagai 500 GB menampung 500 000 000 000 byte. Sistem operasi yang menghitung dengan pangkat dua membaginya dengan 1 073 741 824 dan menampilkan sekitar 465.66 GiB. Sekitar 34 yang tampak hilang itu sejak awal memang tidak ada. Kedua bilangan hanya memakai satuan yang berbeda. Selisihnya membesar seiring satuannya: KiB 2.4% lebih besar daripada kB, GiB sekitar 7.4% lebih besar daripada GB.

Kesalahan umum
  • "1 KB tepat 1000 byte di mana saja." Menurut standar, kB berarti 1000 byte dan 1024 byte adalah KiB. Dalam praktik, nama lama masih dipakai untuk keduanya. NIST mencatat bahwa produsen memori biasanya mengartikan megabyte sebagai 2²⁰ byte, sedangkan produsen media penyimpanan mengartikannya 1 000 000, dan disket lama "1.44 MB" memakai megabyte ketiga sebesar 1 024 000 byte. Jika ukuran persisnya penting, cari huruf i: KiB, MiB, GiB.
  • "Drive 500 GB saya datang dengan 34 GB hilang." 500 000 000 000 byte ÷ 1 073 741 824 ≈ 465.66 GiB. Byte-nya sama, satuannya berbeda. 500 − 465.66 ≈ 34.34, dan selisih itulah 34 yang "hilang".
  • "Satu karakter selalu satu byte." Dalam UTF-8 itu hanya berlaku untuk 128 karakter ASCII. é memakan 2 byte, suku kata Korea 3, dan 😀 4, jadi batas yang dihitung dalam byte terisi sekitar tiga kali lebih cepat dengan teks Korea daripada dengan teks Inggris.
  • "Karakter 7 disimpan sebagai bilangan 7." Karakter "7" adalah kode 55, atau 00110111. Program yang membaca "7" dari teks harus mengubahnya menjadi bilangan 7 sebelum bisa menghitung dengannya.
Catatan untuk guruMulailah dari byte di atas kertas, bukan dari definisi. Tulis Hello, cari kelima kodenya bersama-sama di tabel ASCII, dan baru sesudah itu tunjukkan heksanya. Heksa adalah bagian tempat siswa tersendat. Minta mereka menulis satu byte sebagai 8 bit, menarik garis di tengahnya, dan mengubah tiap separuh menjadi satu digit, dengan daftar kecil 10 = A ... 15 = F di sampingnya. Selisih 32 antara A dan a layak ditunjukkan, karena membalik satu bit di adegan membuatnya melekat di ingatan. Jika ada komputer, simpan satu baris bahasa Inggris dan satu baris bahasa Korea sebagai file teks UTF-8, lalu bandingkan ukuran filenya.
  1. Berapa nilai 0x41 dalam desimal?
  2. Berapa nilai 0xFF dalam desimal?
  3. Berapa bit yang diwakili satu digit heksa?
  4. A adalah 65 dalam ASCII. Berapa bilangan untuk C?
  5. Berapa lebih besar kode a dibanding kode A?
  6. Berapa banyak kode yang dimiliki ASCII 7 bit?
  7. Berapa byte yang dipakai suku kata Korea U+D55C dalam UTF-8?
  8. Karakter mana yang disimpan sebagai 01000010?
    • B
    • A
    • b
    • 2
  9. Berapa byte dalam 1 MiB?
  10. Sebuah drive menampung 500 000 000 000 byte. Kira-kira berapa GiB itu? (satu tempat desimal)
Poin penting
  • Satu digit heksa = 4 bit; satu byte = dua digit heksa (0x00 sampai 0xFF).
  • ASCII: A = 65, a = 97, 0 = 48; 128 kode dalam 7 bit.
  • UTF-8 memakai 1 sampai 4 byte per karakter; teks ASCII tidak berubah.
  • 1 kB = 1000 B, 1 KiB = 1024 B; 1 MiB = 1 048 576 B.
Sumber kursus ini (9)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
  • Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
  • IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
  • IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
  • Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
  • Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
  • Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
  • abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
  • John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).

Diperiksa: 2026-10-17