If-Koubou

Mengapa Karakter Bahasa Inggris membutuhkan Lebih Sedikit Byte untuk Mewakili Mereka daripada Karakter dalam Huruf Lain?

Mengapa Karakter Bahasa Inggris membutuhkan Lebih Sedikit Byte untuk Mewakili Mereka daripada Karakter dalam Huruf Lain? (Bagaimana caranya)

Sementara sebagian besar dari kita mungkin tidak pernah berhenti untuk memikirkannya, karakter alfabetis tidak semua ukuran yang sama dalam jumlah byte yang diperlukan untuk mewakili mereka. Tapi kenapa begitu? Posting SuperUser Q & A saat ini memiliki jawaban atas pertanyaan pembaca yang ingin tahu.

Sesi Tanya & Jawab hari ini hadir untuk memberi kami hak milik SuperUser-sub divisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.

Screenshot ASCII Chart parsial milik Wikipedia.

Pertanyaan

Pembaca SuperUser khajvah ingin tahu mengapa berbagai abjad mengambil jumlah ruang disk yang berbeda ketika disimpan:

Ketika saya meletakkan 'a' dalam file teks dan menyimpannya, itu membuatnya 2 byte dalam ukuran. Tapi ketika saya menempatkan karakter seperti 'ա' (huruf dari abjad Armenia), itu membuatnya 3 byte dalam ukuran.

Apa perbedaan antara huruf pada komputer? Mengapa bahasa Inggris mengambil sedikit ruang saat disimpan?

Surat adalah surat, kan? Mungkin tidak! Apa jawaban atas misteri abjad ini?

Jawabannya

Kontributor Superuser, Doktoro Reichard dan ernie punya jawabannya untuk kami. Pertama, Doktoro Reichard:

Salah satu skema pengkodean pertama yang dikembangkan untuk digunakan di komputer mainstream adalah ASCII (Kode Standar Amerika untuk Pertukaran Informasi) standar. Ini dikembangkan pada 1960-an di Amerika Serikat.

Alfabet bahasa Inggris menggunakan bagian dari alfabet Latin (misalnya, ada beberapa kata beraksen dalam bahasa Inggris). Ada 26 huruf individu dalam alfabet itu, tidak mempertimbangkan huruf. Dan juga harus ada nomor individu dan tanda baca dalam skema apa pun yang berpretensi untuk menyandikan alfabet Inggris.

Tahun 1960-an juga merupakan masa ketika komputer tidak memiliki jumlah memori atau ruang disk yang kita miliki sekarang. ASCII dikembangkan untuk menjadi representasi standar dari alfabet fungsional di semua komputer Amerika. Pada saat itu, keputusan untuk membuat setiap karakter ASCII 8 bit (1 byte) panjang dibuat karena rincian teknis dari waktu (artikel Wikipedia menyebutkan fakta bahwa pita perforated memegang 8 bit dalam posisi pada suatu waktu). Bahkan, skema ASCII asli dapat ditransmisikan menggunakan 7 bit, dan yang kedelapan dapat digunakan untuk cek paritas. Perkembangan selanjutnya memperluas skema ASCII awal untuk memasukkan beberapa karakter beraksen, matematika, dan terminal.

Dengan peningkatan penggunaan komputer baru-baru ini di seluruh dunia, semakin banyak orang dari berbagai bahasa yang memiliki akses ke komputer. Itu berarti bahwa, untuk setiap bahasa, skema pengkodean 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 yang bermakna ke dalam satu set karakter abstrak tunggal.

UTF-8 adalah salah satu cara untuk menyandikan set karakter Unicode. Ini adalah pengkodean variabel-lebar (yaitu karakter yang berbeda dapat memiliki ukuran yang berbeda) dan itu dirancang untuk kompatibilitas mundur dengan skema ASCII sebelumnya. Dengan demikian, set karakter ASCII akan tetap satu byte dalam ukuran sementara karakter lain adalah dua atau lebih byte dalam ukuran. UTF-16 adalah cara lain untuk menyandikan set karakter Unicode. Dibandingkan dengan UTF-8, karakter dikodekan sebagai satu set satu atau dua unit kode 16-bit.

Sebagaimana dinyatakan dalam komentar lain, karakter 'a' menempati satu byte sementara 'ա' menempati dua byte, menunjukkan encoding UTF-8. Byte tambahan dalam pertanyaan asli adalah karena keberadaan karakter baris baru di bagian 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 hingga 1 yang sederhana tidak dapat dipertahankan, sehingga lebih banyak data diperlukan untuk menyimpan karakter.

Perhatikan bahwa umumnya, sebagian besar pengkodean menggunakan 7 bit pertama (128 nilai) untuk karakter ASCII. Itu menyisakan 8 bit, atau 128 nilai lebih 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.

Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.