Lai gan lielākā daļa no mums, iespējams, nekad nav apstājušies domāt par to, alfabēta rakstzīmes ne vienmēr ir vienādas lielums to baitu skaitā, kas tos aizstāv. Bet kāpēc tas ir? Šodienas SuperUser Q & A ziņai ir atbildes uz ziņkārīgo lasītāja jautājumu.
Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.
Daļēja ASCII diagrammas screenshot pieklājīgi no Wikipedia.
SuperUser lasītājs khajvah vēlas uzzināt, kāpēc dažādi alfabēti saglabā dažādus daudzumus diska vietas:
Kad es ievietoju tekstu failā 'a' un saglabā to, tas ir 2 baiti pēc lieluma. Bet, kad es ievietoju rakstzīmi, piemēram, "ա" (vēstule no armēņu alfabēta), tajā tas ir 3 baiti pēc lieluma.
Kāda ir atšķirība starp abām vienībām datorā? Kāpēc angļu valodā saglabājas mazāk vietas?
Burti ir burti, vai ne? Varbūt ne! Kāda ir atbilde uz šo alfabētiskā mystery?
SuperUser atbalstītāji Doktoro Reichard un ernie ir atbilde mums. Pirmkārt, doktors Reičards:
Viena no pirmajām kodēšanas shēmām, kas jāizstrādā lietošanai galvenajos datoros, ir ASCII (Amerikas standarta informācijas apmaiņas kods) standarta. Tas tika izstrādāts 1960. gadā Amerikas Savienotajās Valstīs.
Angļu valodas alfabēts izmanto daļu no latīņu alfabēta (piemēram, angļu valodās ir maz akcentētu vārdu). Šajā abās valodās ir 26 atsevišķas burti, neņemot vērā lietu. Tāpat arī pastāvētu atsevišķi skaitļi un pieturzīmes jebkurā shēmā, kas izliekas par angļu valodas alfabēta kodēšanu.
1960. gados bija arī laiks, kad datoriem nebija daudz atmiņas vai diska vietas, kas mums tagad ir. ASCII tika izstrādāts kā standarta funkcionālā alfabēta attēlojums visos amerikāņu datoros. Laika gaitā tika pieņemts lēmums padarīt katru ASCII rakstzīmi 8 biti (1 baits) garš laika tehnisko detaļu dēļ (Vikipēdijas raksts norāda uz faktu, ka perforētajā lentē vienu reizi bija 8 biti). Faktiski sākotnējo ASCII shēmu var pārsūtīt, izmantojot 7 bitus, un astoto daļu varētu izmantot paritātes pārbaudēm. Vēlāk attīstība paplašināja sākotnējo ASCII shēmu, iekļaujot vairākas akcentētas, matemātiskās un termināļa rakstzīmes.
Ņemot vērā neseno datora lietošanas pieaugumu visā pasaulē, arvien vairāk cilvēku no dažādām valodām bija piekļuvuši 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ā ar lasīšanas valodu no dažādiem valodu termināļiem.
Unicode parādījās kā risinājums dažādu termināļu esamībai, apvienojot visas iespējamās jēgpilnās rakstzīmes vienā abstraktā rakstzīmju kopa.
UTF-8 ir viens veids, kā kodēt Unicode rakstzīmju kopu. Tā ir mainīgas platuma kodēšana (t.i., dažādām rakstzīmēm var būt dažādi izmēri), un tā tika izstrādāta tālajai saderībai ar iepriekšējo ASCII shēmu. Tādējādi ASCII rakstzīmju kopu skaits saglabāsies par vienu baitu, savukārt citas rakstzīmes ir divas vai vairākas izmēra baiti. UTF-16 ir vēl viens veids, kā kodēt Unicode rakstzīmju kopu. Salīdzinājumā ar UTF-8 rakstzīmes tiek kodētas kā viena vai divu 16 bitu kodu vienību kopums.
Kā norādīts citos komentāros, rakstzīme "a" aizņem vienu baitu, bet "ա" aizņem divus bitus, apzīmē UTF-8 kodējumu. Sākotnējā jautājumā esošais papildu baits bija saistīts ar to, ka beigās ir jauna līnija.
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 vajadzīgas vairāk iespēju nekā šis, vienkāršu 1 līdz 1 kartēšanu nevar uzturēt, tāpēc rakstzīmes saglabāšanai ir vajadzīgi vairāk datu.
Ņemiet vērā, ka parasti lielākajā daļā kodējumu tiek izmantoti pirmie 7 biti (128 vērtības) ASCII rakstzīmēm. Tas atstāj 8. bitu vai 128 vairāk vērtību vairākām rakstzīmēm. Pievienojiet akcentētas rakstzīmes, Āzijas valodas, kirilicas utt., Un jūs viegli varat saprast, kāpēc 1 bitu nepietiek, lai saglabātu visas rakstzīmes.
Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.