Kāpēc angļu burtiem ir nepieciešami mazāk baitu, lai tos attēlotu, nekā rakstzīmes citos alfabētos?
Lai gan lielākā daļa no mums, iespējams, nekad nav apturējuši domāt par to, alfabēta rakstzīmes nav vienādas ar baitu skaitu, kas nepieciešams, lai tos pārstāvētu. Bet kāpēc? Šodienas SuperUser Q&A ziņojumam ir atbildes uz ziņkārīga lasītāja jautājumu.
Šodienas jautājumu un atbilžu sesija mums dod pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.
Daļēja ASCII diagrammas ekrānuzņēmums pieklājīgi no Wikipedia.
Jautājums
SuperUser lasītājs khajvah vēlas uzzināt, kāpēc dažādi alfabētiņi saglabā dažādus diska vietas apjomus, kad tos saglabā:
Kad teksta failā ievietoju "a" un saglabāju to, tas padara to par 2 baitiem lielus. Bet, kad ievietoju rakstzīmi, piemēram, “ա” (vēstule no armēņu alfabēta), tas padara to par 3 baitiem lieliem.
Kāda ir atšķirība starp alfabētiem datorā? Kāpēc, saglabājot, angļu valoda aizņem mazāk vietas?
Burti ir burti, vai ne? Varbūt ne! Kāda ir atbilde uz šo alfabētisko noslēpumu?
Atbilde
SuperUser ieguldītāji Doktoro Reichard un ernie ir atbilde mums. Pirmkārt, Doktoro Reichard:
Viena no pirmajām kodēšanas shēmām, kas jāizstrādā izmantošanai galvenajos datoros, ir ASCII (Amerikas informācijas apmaiņas standarta kods) standarts. Tas tika izstrādāts 1960. gados Amerikas Savienotajās Valstīs.
Angļu alfabēts izmanto latīņu alfabēta daļu (piemēram, angļu valodā ir maz akcentu). Šajā alfabētā ir 26 atsevišķie burti, neņemot vērā lietu. Un katrā shēmā, kas izliekas kodēt angļu alfabētu, būtu arī jābūt atsevišķiem numuriem un pieturzīmēm..
1960. gads bija arī laiks, kad datoriem nebija atmiņas vai diska vietas, kas mums tagad ir. ASCII tika izstrādāta kā standarta alfabēta attēlojums visos amerikāņu datoros. Tajā laikā lēmums par katru ASCII rakstzīmes 8 bitu (1 baitu) garumu tika pieņemts laika tehnisko detaļu dēļ (Wikipedia rakstā minēts, ka perforētā lente satur 8 bitus vienā pozīcijā). Faktiski sākotnējo ASCII shēmu var nosūtīt, izmantojot 7 bitus, un astoto var izmantot paritātes pārbaudēm. Vēlāk notikumi paplašināja sākotnējo ASCII shēmu, iekļaujot tajā vairākas akcentētas, matemātiskas un termināļa rakstzīmes.
Ar neseno datora lietošanas pieaugumu visā pasaulē arvien vairāk cilvēku no dažādām valodām varēja piekļūt datoram. Tas nozīmēja, ka katrai valodai bija jāizstrādā jaunas kodēšanas shēmas neatkarīgi no citām shēmām, kas būtu pretrunā, ja tiktu lasītas no dažādiem valodu termināļiem..
Unicode radās kā risinājums dažādu terminālu esamībai, apvienojot visas iespējamās nozīmīgās rakstzīmes vienā abstraktā rakstzīmju kopā.
UTF-8 ir viens veids, kā kodēt Unicode rakstzīmju kopu. Tas ir mainīga platuma kodējums (t.i., dažādām rakstzīmēm var būt dažādi izmēri), un tas tika izstrādāts, lai nodrošinātu saderību ar iepriekšējo ASCII shēmu. Tādējādi ASCII rakstzīmju kopa saglabāsies viena baita lielumā, bet jebkura cita rakstzīme ir divu vai vairāku baitu lielums. UTF-16 ir vēl viens veids, kā kodēt Unicode rakstzīmju kopu. Salīdzinot ar UTF-8, rakstzīmes tiek kodētas kā viena vai divu 16 bitu kodu vienību kopa.
Kā norādīts citos komentāros, “a” rakstzīme aizņem vienu baitu, bet “ա” aizņem divus baitus, kas apzīmē UTF-8 kodējumu. Sākotnējā jautājuma papildu baits bija saistīts ar jauna līnijas rakstura esamību beigās.
Seko atbilde no ernie:
1 baits ir 8 biti, un tādējādi tas var būt līdz 256 (2 ^ 8) dažādām vērtībām.
Valodām, kurām ir nepieciešamas vairāk iespēju, vienkāršu 1 līdz 1 kartēšanu nevar saglabāt, tāpēc rakstzīmju glabāšanai ir vajadzīgi vairāk datu..
Ņemiet vērā, ka parasti lielākā daļa kodējumu izmanto pirmos 7 bitus (128 vērtības) ASCII rakstzīmēm. Tas atstāj 8. bitu vai vēl 128 vērtības vairākām rakstzīmēm. Pievienojiet akcentētās rakstzīmes, Āzijas valodas, kirilicu uc, un jūs varat viegli saprast, kāpēc 1 baits nav pietiekams visu rakstzīmju glabāšanai.
Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.