ASCII memang awalnya dipahami sebagai kode 7-bit. Hal ini dilakukan dengan baik sebelum byte 8-bit tersedia di mana-mana, dan bahkan hingga tahun 1990-an Anda dapat menemukan perangkat lunak yang mengasumsikan dapat menggunakan bit ke-8 dari setiap byte teks untuk tujuannya sendiri ("bukan 8-bit bersih"). Saat ini orang menganggapnya sebagai pengkodean 8-bit di mana byte 0x80 hingga 0xFF tidak memiliki arti yang ditentukan, tetapi itu retcon .
Ada lusinan pengkodean teks yang menggunakan bit ke-8; mereka dapat diklasifikasikan sebagai kompatibel dengan ASCII atau tidak, dan lebar tetap atau variabel. Kompatibel dengan ASCII artinya apa pun konteksnya , byte tunggal dengan nilai dari 0x00 hingga 0x7F menyandikan karakter yang sama dengan yang mereka lakukan di ASCII. Anda tidak ingin ada hubungannya dengan pengkodean teks yang tidak kompatibel dengan ASCII jika Anda mungkin dapat menghindarinya; Program naif yang mengharapkan ASCII cenderung salah menafsirkannya dengan cara yang sangat berbahaya, seringkali merusak keamanan. Mereka sangat usang saat ini sehingga (misalnya) HTML5 melarang penggunaannya di Web publik, dengan pengecualian yang tidak menguntungkan dari UTF-16 . Saya tidak akan membicarakannya lagi.
Pengkodean lebar tetap berarti seperti apa suaranya: semua karakter dikodekan menggunakan jumlah byte yang sama. Agar kompatibel dengan ASCII, pengkodean tetap-dengan harus mengenkode semua karakternya hanya menggunakan satu byte, sehingga tidak boleh lebih dari 256 karakter. Pengkodean yang paling umum saat ini adalah Windows-1252 , perpanjangan dari ISO 8859-1 .
Hanya ada satu pengkodean yang kompatibel dengan ASCII dengan lebar variabel yang perlu diketahui saat ini, tetapi ini sangat penting: UTF-8 , yang mengemas semua Unicode ke dalam pengkodean yang kompatibel dengan ASCII. Anda benar-benar ingin menggunakan ini jika Anda bisa mengelolanya.
Sebagai catatan terakhir, "ASCII" saat ini mengambilnya praktisnya definisi dari Unicode, bukan standar aslinya (ANSI X3.4-1968), karena secara historis terdapat beberapa lusin variasi pada repertoar ASCII 127 karakter - misalnya, beberapa tanda baca mungkin diganti dengan huruf beraksen untuk memfasilitasi transmisi teks bahasa Prancis. Saat ini semua variasi tersebut sudah usang, dan ketika orang mengatakan "ASCII" itu berarti bahwa byte dengan nilai 0x00 sampai 0x7F menyandikan titik kode Unicode U + 0000 sampai U + 007F. Ini mungkin hanya penting bagi Anda jika Anda pernah menulis standar teknis.
Jika Anda tertarik dengan sejarah ASCII dan pengkodean sebelumnya, mulailah dengan makalah "The Evolution of Character Codes, 1874-1968" (salinan samizdat di http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) dan kemudian mengejar referensinya (banyak di antaranya tidak tersedia secara online dan mungkin sulit ditemukan bahkan dengan akses ke perpustakaan universitas, dengan menyesal saya katakan).
Di Linux
man ascii
mengatakan:sumber
Tabel ASCII asli dikodekan pada 7 bit sehingga memiliki 128 karakter.
Saat ini kebanyakan pembaca / editor menggunakan tabel ASCII "diperpanjang" (dari ISO 8859-1 ), yang dikodekan pada 8 bit dan menikmati 256 karakter (termasuk Á , Ä , Œ , é , è dan karakter lain yang berguna untuk bahasa Eropa juga sebagai mesin terbang matematika dan simbol lainnya).
Sementara UTF-8 menggunakan pengkodean yang sama seperti tabel ASCII dasar (artinya
0x41
adalah A di kedua kode), tidak berbagi pengkodean yang sama untuk blok "Latin Extended-A". Yang terkadang menyebabkan karakter aneh muncul dalam kata-kata seperti à la carte atau piñata .sumber
Pengkodean ASCII adalah 7-bit, tetapi dalam praktiknya, karakter yang dikodekan dalam ASCII tidak disimpan dalam kelompok 7-bit. Sebaliknya, satu ASCII disimpan dalam satu byte, dengan MSB biasanya disetel ke 0 (ya, ini terbuang dalam ASCII).
Anda dapat memverifikasi ini dengan memasukkan string dalam kumpulan karakter ASCII di editor teks, menyetel penyandian ke ASCII, dan melihat biner / hex:
Selain: penggunaan pengkodean (secara ketat) ASCII sekarang jarang, mendukung UTF-8 (yang tidak menyia-nyiakan MSB yang disebutkan di atas - pada kenyataannya, MSB 1 menunjukkan titik kode dikodekan dengan lebih dari 1 byte).
sumber
Kode ASCII asli menyediakan 128 karakter berbeda dengan nomor 0 hingga 127. ASCII 7-bit adalah sinonim, karena 8-bit byte adalah elemen penyimpanan umum, ASCII menyisakan ruang untuk 128 karakter tambahan yang digunakan untuk bahasa asing dan simbol lainnya. Tetapi kode 7-bit asli dibuat sebelum kode 8-bit. ASCII adalah singkatan dari American Standard Code for Information Interchange Pada sistem surat internet awal, hanya mendukung kode ASCII 7-bit, ini karena kemudian dapat menjalankan program dan file multimedia melalui sistem menyedot. Sistem ini menggunakan 8 bit byte tetapi kemudian harus diubah menjadi format 7-bit menggunakan metode pengkodean seperti MIME, UUcoding dan BinHex. Ini berarti 8-bit telah diubah menjadi karakter 7-bit, yang menambahkan byte ekstra untuk menyandikannya.
sumber
ketika kita memanggil ASCII sebagai kode 7 bit, bit paling kiri digunakan sebagai bit tanda sehingga dengan 7 bit kita dapat menulis hingga 127. itu berarti dari -126 hingga 127 karena nilai imam maks ASCII adalah 0 hingga 255. ini bisa jadi hanya puas dengan argumen 7 bit jika bit terakhir dianggap sebagai bit tanda
sumber