Mengapa Karakter Bahasa Inggris membutuhkan Lebih Sedikit Bytes untuk Mewakili Mereka daripada Karakter di Abjad Lain?
Sementara sebagian besar dari kita mungkin tidak pernah berhenti untuk memikirkannya, karakter alfabet tidak semua ukuran yang sama dalam jumlah byte yang diperlukan untuk mewakili mereka. Tapi kenapa begitu? Posting Q&A Pengguna Super hari ini memiliki jawaban atas pertanyaan pembaca yang penasaran.
Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.
Partial ASCII Chart tangkapan layar atas izin Wikipedia.
Pertanyaan
Khajvah pembaca super pengguna ingin tahu mengapa huruf yang berbeda mengambil jumlah ruang disk yang berbeda ketika disimpan:
Ketika saya meletakkan 'a' dalam file teks dan menyimpannya, itu membuatnya berukuran 2 byte. Tetapi ketika saya memasukkan karakter seperti 'ա' (huruf dari alfabet Armenia), itu membuatnya menjadi 3 byte dalam ukuran.
Apa perbedaan antara huruf pada komputer? Mengapa bahasa Inggris lebih hemat tempat saat disimpan?
Surat adalah surat, bukan? Mungkin tidak! Apa jawaban untuk misteri alfabet ini?
Jawabannya
Kontributor SuperUser Doktoro Reichard dan ernie memiliki jawaban untuk kita. Pertama, Doktoro Reichard:
Salah satu skema pengkodean pertama yang dikembangkan untuk digunakan pada komputer arus utama adalah ASCII (Kode Standar Amerika untuk Pertukaran Informasi) standar. Ini dikembangkan pada 1960-an di Amerika Serikat.
Alfabet bahasa Inggris menggunakan bagian dari abjad Latin (misalnya, ada beberapa kata beraksen dalam bahasa Inggris). Ada 26 huruf individual dalam alfabet itu, tidak mempertimbangkan kasus. Dan juga harus ada nomor individual dan tanda baca dalam skema apa pun yang berpura-pura menyandikan alfabet bahasa Inggris.
1960-an juga merupakan masa ketika komputer tidak memiliki jumlah memori atau ruang disk yang kita miliki sekarang. ASCII dikembangkan menjadi representasi standar dari alfabet fungsional di semua komputer Amerika. Pada saat itu, keputusan untuk membuat setiap karakter ASCII sepanjang 8 bit (1 byte) dibuat karena detail teknis waktu itu (artikel Wikipedia menyebutkan fakta bahwa pita berlubang menahan 8 bit pada posisi pada suatu waktu). Bahkan, skema ASCII asli dapat ditransmisikan menggunakan 7 bit, dan yang kedelapan dapat digunakan untuk pemeriksaan paritas. Perkembangan selanjutnya memperluas skema ASCII asli untuk memasukkan beberapa aksen, matematika, dan karakter terminal.
Dengan meningkatnya penggunaan komputer baru-baru ini di seluruh dunia, semakin banyak orang dari berbagai bahasa memiliki akses ke komputer. Itu berarti bahwa, untuk setiap bahasa, skema penyandian baru harus dikembangkan, terlepas dari skema lain, yang akan bertentangan jika dibaca dari terminal bahasa yang berbeda..
Unicode muncul sebagai solusi untuk keberadaan terminal yang berbeda dengan menggabungkan semua karakter bermakna yang mungkin menjadi satu set karakter abstrak tunggal.
UTF-8 adalah salah satu cara untuk menyandikan kumpulan karakter Unicode. Ini adalah pengodean lebar variabel (mis. Karakter yang berbeda dapat memiliki ukuran yang berbeda) dan dirancang untuk kompatibilitas dengan skema ASCII sebelumnya. Dengan demikian, set karakter ASCII akan tetap berukuran satu byte sementara karakter lainnya berukuran dua atau lebih byte. UTF-16 adalah cara lain untuk menyandikan kumpulan karakter Unicode. Dibandingkan dengan UTF-8, karakter dikodekan sebagai satu set satu atau dua unit kode 16-bit.
Seperti yang dinyatakan dalam komentar lain, karakter 'a' menempati byte tunggal sementara 'ա' menempati dua byte, yang menunjukkan pengkodean UTF-8. Byte tambahan dalam pertanyaan awal disebabkan oleh adanya karakter baris baru di akhir.
Diikuti oleh jawaban dari ernie:
1 byte adalah 8 bit, dan dengan demikian dapat mewakili hingga 256 (2 ^ 8) nilai yang berbeda.
Untuk bahasa yang membutuhkan lebih banyak kemungkinan daripada ini, pemetaan 1 banding 1 tidak dapat dipertahankan, sehingga lebih banyak data diperlukan untuk menyimpan karakter.
Perhatikan bahwa secara umum, sebagian besar penyandian menggunakan 7 bit pertama (nilai 128) untuk karakter ASCII. Yang meninggalkan bit ke-8, atau 128 lebih banyak nilai untuk lebih banyak karakter. Tambahkan karakter beraksen, bahasa Asia, Cyrillic, dll. Dan Anda dapat dengan mudah melihat mengapa 1 byte tidak cukup untuk menampung semua karakter.
Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.