If you're seeing this message, it means we're having trouble loading external resources on our website.

Եթե գտնվում ես վեբ զտիչի հետևում, խնդրում ենք համոզվել, որ *.kastatic.org և *.kasandbox.org տիրույթները հանված են արգելափակումից։

Հիմնական նյութ

Տեքստի պահեստավորումը երկուական համակարգում

Համակարգիչները երկուական համակարգով պահում են ավելին, քան պարզապես թվեր: Բայց ինչպե՞ս կարող են երկուական համակարգի թվերը ներկայացնել ոչ թվերը, ինչպիսիք են տառերը և նշանները:
Ինչպես պարզվում է, դրա համար անհրաժեշտ է ընդամենը մի փոքր մարդկային ներգործություն: Մենք պետք է պայմանավորվենք կոդավորումների և նիշից երկուական համակարգի թվի քարտեզագրման վերաբերյալ:

Պարզ կոդավորում

Օրինակ, ի՞նչ կլիներ, եթե մենք ցանկանայինք պահպանել հետևյալ նշանները երկուական համակարգով.
☮️❤️😀
Մենք կարող ենք հորինել հետևյալ կոդավորումը․
Երկուական համակարգի թվերՍիմվոլ
01☮️
10❤️
11😀
Եկեք այն անվանենք HPE (Hewlett Packard Enterprise) կոդավորում: Այն օգնում է, որ կոդավորումներն ունենան անուններ, որպեսզի ծրագրավորողները իմանան, որ օգտագործում են նույն կոդավորումը:
Եթե ​​համակարգչային ծրագրին անհրաժեշտ է պահել ❤️ նշանը համակարգչի հիշողության մեջ, այն կարող է փոխարենը պահել 10: Երբ ծրագիրը պետք է օգտագործողին ցուցադրի 10, այն կարող է հիշել HPE կոդավորումը և դրա փոխարեն ցուցադրել ❤️:
Համակարգչային ծրագրերին և ֆայլերին հաճախ անհրաժեշտ է պահել մի քանի նիշեր, ինչը նրանք կարող են անել՝ շարելով յուրաքանչյուր նիշի կոդավորումը:
Ծրագիրը կարող է գրել «msg.hpe» անունով ֆայլ հետևյալ տվյալներով.
010111111010
Մեկ այլ համակարգչի վրա գտնվող ծրագիրը, որը հասկանում է HPE կոդավորումը, կարող է այնուհետև բացել «msg.hpe» և ցուցադրել նշանների հաջորդականությունը:
Ստուգի՛ր գիտելիքդ
Ի՞նչ հաջորդականություն կցուցադրի ծրագիրը:
Ընտրիր ճիշտ պատասխանը։

HPE կոդավորումն օգտագործում է միայն 2 բիթ, այնպես որ այն սահմանափակում է ներկայացվող նիշերի քանակը:
Ստուգի՛ր գիտելիքդ
Քանի՞ նիշ կարող է ներկայացնել 2-բիթանոց կոդավորումը:
  • Քո պատասխանը պետք է լինի
  • ամբողջ թիվ, օրինակ՝ 6
  • պարզեցված կանոնավոր կոտորակ, օրինակ՝ 3/5
  • պարզեցված անկանոն կոտորակ, օրինակ՝ 7/4
  • խառը թիվ, օրինակ՝ 1 3/4
  • վերջավոր տասնորդական կոտորակ, օրինակ 0,75
  • Պիի բազմապատիկ, օրինակ՝ 12 պի կամ 2/3 պի

Այնուամենայնիվ, ավելի շատ բիթերի դեպքում կոդավորումը կարող է ներկայացնել համակարգիչների համար բավականաչափ տառեր՝ հաղորդագրություններ, փաստաթղթեր և վեբ էջեր պահելու համար:

ASCII կոդավորում

ASCII-ն առաջին ստանդարտացված կոդավորումներից մեկն էր: Այն հորինվել է դեռևս 1960-ականներին, երբ հեռագրությունը միջքաղաքային հաղորդակցության հիմնական ձևն էր, բայց մինչ օրս այն օգտագործվում է ժամանակակից հաշվողական համակարգերում: 1
Հեռագրավարները տպագրում էին հաղորդագրություններ այնպիսի տպիչների վրա, ինչպիսին այս մեկն է:
Հեռատիպային մեքենայի լուսանկար, որը կազմված է մեխանիկական ստեղնաշարից, տպագրված տառերով դուրս եկող թղթից և մուտքային թղթի շերտերը կարդալու մեխանիզմից:
ASR 33 հեռագրման մեքենա: Պատկերի աղբյուր՝ Marcin Wichary
Այնուհետև հեռագրամեքենան օգտագործում էր ASCII ստանդարտը՝ յուրաքանչյուր տպագրված նիշը երկուական համակարգով կոդավորելու և այնուհետև պահելու կամ երկուական համակարգի տվյալները փոխանցելու համար:
1972 թվականի հեռագրամեքենայի ձեռնարկի այս էջը ցույց է տալիս 128 ASCII կոդերը.
ASCII կոդավորումների սկանավորված աղյուսակ:
ASCII աղյուսակTermiNet 300 տպիչից: Պատկերի աղբյուրը՝ Վիքիպեդիա
Յուրաքանչյուր ASCII նիշ կոդավորված է երկուական տարբերակով՝ օգտագործելով 7 բիթ: Վերևի աղյուսակում սյունակի վերնագիրը ցույց է տալիս առաջին 3 բիթերը, իսկ տողի վերնագիրը ցույց է տալիս վերջին 4 բիթերը: Հենց առաջին նիշը «NUL» է, որը կոդավորված է որպես 0000000.:
Առաջին 32 ծածկագրերը ներկայացնում են "կառավարման նիշեր", որոնք տառ տպելուց բացի որոշակի ազդեցություն են ունենում: "BEL"-ը (կոդավորված երկուական համակարպում որպես 0000111) հնչեցնում էր զանգ կամ ձայնային ազդանշան: "ENQ"-ը (կոդավորված որպես 0000101) ներկայացնում է ընդունող կայանին իրեն ճանաչելու հարցում, խնդրանք։
Կառավարման նիշերը ի սկզբանե նախատեսված էին հեռագրամեքենաների և հեռագրության համար, բայց շատերը վերափոխվել են ժամանակակից համակարգիչների և ինտերնետի համար, հատկապես «CR» և «LF»: «CR»-ը (0001101) հեռագրամեքենաներում ներկայացնում էր «փոխադրիչի վերադարձ» հրահանգը՝ տպիչի գլխիկը տեղափոխելով տողի սկիզբ: «LF»-ը (0001010) ներկայացնում էր «տողի ավելացում» հարահանգը՝ տպիչի գլխիկը մեկ տողով ներքև տեղափոխելով: Ժամանակակից ինտերնետ պրոտոկոլները, ինչպիսիք են HTTP, FTP և SMTP, օգտագործում են «CR» + «LF» համակցությունը՝ տողերի վերջը ներկայացնելու համար:
Մնացած 96 ASCII նիշերը շատ ավելի ծանոթ են թվում:
Ահա առաջին 8 մեծատառերը.
ԵրկուականՆիշ
1000001A
1000010B
1000011C
1000100D
1000101E
1000110F
1000111G
1001000H
Հետևելով ASCII ստանդարտին՝ կարող ենք չորս տառից բաղկացած հաղորդագրություն կոդավորել երկուական համակարգում.
1000011100100010001011000110
Ստուգի՛ր գիտելիքդ
Ի՞նչ բառ է ներկայացնում ASCII-ով կոդավորված երկուական համակարգի տվյալները:
Ընտրիր ճիշտ պատասխանը։

Այնուամենայնիվ, ASCII կոդավորման հետ կապված մի քանի խնդիրներ կան:
Առաջին մեծ խնդիրն այն է, որ ASCII-ը ներառում է միայն տառեր անգլերեն այբուբենից և սահմանափակ թվով նշաններ:
Լեզուն, որն օգտագործում է 128-ից պակաս նիշեր, կարող է ստեղծել ASCII-ի սեփական տարբերակը՝ տեքստը միայն իրենց լեզվով կոդավորելու համար, բայց ի՞նչ կարելի է ասել մի քանի լեզուների նիշերով տեքստային ֆայլի մասին: ASCII-ը չէր կարող կոդավորել այնպիսի տող, ինչպիսին է. "Hello, José, would you care for Glühwein? It costs 10 €"
Իսկ ի՞նչ կասեք հազարավոր լոգոգրամներով լեզուների վերաբերյալ: ASCII-ը չէր կարող կոդավորել բավականաչափ լոգոգրամներ՝ ծածկելու նման չինական նախադասությունը "你好,想要一盘饺子吗?十块钱。"
ASCII կոդավորման մյուս խնդիրն այն է, որ այն օգտագործում է 7 բիթ յուրաքանչյուր նիշ ներկայացնելու համար, մինչդեռ համակարգիչները սովորաբար տեղեկատվությունը պահում են բայթերով՝ 8 բիթանոց միավորներով, և ծրագրավորողները չեն սիրում վատնել հիշողությունը:
Երբ ամենավաղ համակարգիչները առաջին անգամ սկսեցին կոդավորելու համար օգտագործել ASCII նիշերը, տարբեր համակարգիչներ տարբեր եղանակներ էին առաջարկում վերջին բիթն օգտագործելու համար: Օրինակ, HP համակարգիչներն օգտագործում էին ութերորդ բիթը եվրոպական երկրներում օգտագործվող նիշերը ներկայացնելու համար (օրինակ՝ «£» և «Ü»), TRS-80 համակարգիչները՝ գունավոր գրաֆիկայի համար, իսկ Atari համակարգիչները՝ առաջին 128 նիշերը սև ու սպիտակ դարձնելու համար: 2
Արդյու՞նքը։ Մեկ հավելվածում ստեղծված «ASCII» ֆայլը կարող է նմանվել աճպարարության, երբ բացվի մեկ այլ «ASCII» համատեղելի հավելվածում:
Համակարգիչներին անհրաժեշտ էր նոր կոդավորում՝ 8-բիթանոց բայթերի վրա հիմնված կոդավորում, որը կարող էր ներկայացնել աշխարհի բոլոր լեզուները:

Յունիկոդ

Նախ, քանի՞ նիշ է քեզ անհրաժեշտ աշխարհի լեզուները ներկայացնելու համար: Ո՞ր նիշերն են հիմնականում նույնը տարբեր լեզուներով, նույնիսկ եթե դրանք տարբեր հնչյուններ ունեն:
1987 թվականին մի խումբ համակարգչային ինժեներներ փորձեցին պատասխանել այդ հարցերին։ Նրանք, ի վերջո, ստեղծեցին Unicode-ը՝ ունիվերսալ նիշերի հավաքածու, որը յուրաքանչյուր նիշին տալիս է "կոդային կետ" (տասնվեցական համակարգի թիվ) և անուն: 3
Օրինակ, "ą" նիշը վերագրված է "U+0105"-ին և անվանվում է "Լատինական փոքրատառ A": 13 լեզուներով, օրինակ՝ լեհերենում և լիտվերենում, կա մի կերպար, որը նման է "ą"-ին: Այսպիսով, ըստ Unicode-ի՝ լեհերեն "robią" բառի "ą"-ը և լիտվերեն "aslą" բառի "ą"-ը երկուսն էլ նույն նիշն են: Յունիկոդը խնայում է տարածությունը՝ միավորելով տարբեր լեզուների նիշերը:
Բայց դեռ բավականին շատ նիշեր կան կոդավորման համար: Յունիկոդի նիշերի հավաքածուն մեկնարկվել է 1991-ին 7129 անվանական նիշերով, իսկ 2019-ին հասել է 137929-ի: Այդ նիշերի մեծամասնությունը նկարագրում է չինարենից, ճապոներենից և կորեերենից լոգոգրամները, օրինակ, "U+6728", որը վերաբերում է "木"-ին: Այն նաև ներառում է ավելի քան 1200 էմոջիներ ("U+1F389" = "🎉"): 4
Unicode-ը նիշերի հավաքածու է, բայց այն կոդավորում չէ : Բարեբախտաբար, ինժեներների մեկ այլ խումբ լուծեց Unicode-ը երկուականով արդյունավետ կոդավորման խնդիրը:

UTF-8

1992 թվականին համակարգչային գիտնականները հայտնագործեցին UTF-8 կոդավորումը, որը համատեղելի է ASCII կոդավորման հետ, բայց նաև լուծում է դրա խնդիրները: 5
UTF-8-ը կարող է նկարագրել Unicode ստանդարտի յուրաքանչյուր նիշ՝ օգտագործելով 1, 2, 3 կամ 4 բայթ։
Երբ համակարգչային ծրագիրը կարդում է UTF-8 տեքստային ֆայլ, այն գիտի, թե քանի բայթ է ներկայացնում հաջորդ նիշը՝ հիմնվելով, թե քանի 1 բիթ է գտնում բայթի սկզբում:
Բայթերի քանակըԲայթ 1Բայթ 2Բայթ 3Բայթ 4
10xxxxxxx
2110xxxxx10xxxxxx
31110xxxx10xxxxxx10xxxxxx
411110xxx10xxxxxx10xxxxxx10xxxxxx
Եթե ​​առաջին բիթում չկա 1 (եթե առաջին բիթը 0 է), դա ցույց է տալիս մեկ բայթով ներկայացված նիշ: Բայթի մնացած 7 բիթերն օգտագործվում են բնօրինակ 128 ASCII նիշերը ներկայացնելու համար: Դա նշանակում է, որ 8-բիթանոց ASCII նիշերի հաջորդականությունը նույնպես վավեր UTF-8 հաջորդականություն է:
110-ով սկսվող երկու բայթ օգտագործվում է լատինատառ լեզուներից մնացած նիշերը կոդավորելու համար (օրինակ՝ իսպաներեն, գերմաներեն) և այլ լեզուներից, ինչպիսիք են հունարենը, եփրայերենը և արաբերենը: 1110-ով սկսվող երեք բայթ կոդավորում է ասիական լեզուների (օրինակ՝ չինարեն, ճապոներեն, կորեերեն) նիշերի մեծ մասը: Չորս բայթ, որոնք սկսվում են 11110-ով, կոդավորում են մնացած ամեն ինչ՝ սկսած հազվադեպ օգտագործվող պատմական գրերից մինչև ավելի հաճախակի օգտագործվող էմոջիները:
Ստուգի՛ր գիտելիքդ
Համաձայն UTF-8 ստանդարտի՝ քանի՞ նիշ է ներկայացված այս 8 բայթով:
0100100111110000100111111001001010011001111000101001001110001010
  • Քո պատասխանը պետք է լինի
  • ամբողջ թիվ, օրինակ՝ 6
  • պարզեցված կանոնավոր կոտորակ, օրինակ՝ 3/5
  • պարզեցված անկանոն կոտորակ, օրինակ՝ 7/4
  • խառը թիվ, օրինակ՝ 1 3/4
  • վերջավոր տասնորդական կոտորակ, օրինակ 0,75
  • Պիի բազմապատիկ, օրինակ՝ 12 պի կամ 2/3 պի

Ծրագրավորման ժամանակակից լեզուների մեծամասնություն աջակցվում է UTF-8-ով, ուստի ծրագրավորողների մեծամասնությունը երբեք կարիք չունի հստակ իմանալու, թե ինչպես փոխարկել նիշերը երկուական համակարգում:
✏️ Փորձեք օգտագործել JavaScript՝ ստորև բերված ձևով UTF-8 տողերը կոդավորելու համար: Խաղացեք բազմաթիվ լեզուներով և սիմվորներով:
UTF-8 կոդավորման ստանդարտն այժմ համացանցում HTML ֆայլերի գերիշխող կոդավորումն է և 2019 թվականի դեկտեմբերի դրությամբ կազմում է վեբէջերի 94,5%-ը։ 6
🔎 Եթե հենց հիմա մկնիկի աջ կոճակը սեղմես (աջ քլիք) և ընտրես "view page source" (դիտել էջի աղբյուրը), կարող ես որոնել «utf-8» տողը և տեսնել, որ այս վեբ էջը կոդավորված է UTF-8-ով:
Ընդհանրապես, լավ կոդավորումն այն է, որը կարող է քիչ թվով բիթերով ներկայացնել տեղեկատվության առավելագույն քանակ: UTF-8-ը դրա հիանալի օրինակն է, քանի որ թեև այն կարող է կոդավորել ընդհանուր անգլերեն տառերը ընդամենը 1 բայթով, բայց բավական ճկուն է՝ հազարավոր տառեր լրացուցիչ բայթերով կոդավորելու համար:
Այնուամենայնիվ, UTF-8-ը հնարավոր կոդավորումներից մեկն է: UTF-16-ը և UTF-32-ը այլընտրանքային կոդավորումներ են, որոնք նույնպես կարող են նաև ներկայացնել Unicode-ի բոլոր նիշերը: Կան նաև լեզվի հատուկ կոդավորումներ, ինչպիսիք են Shift-JIS-ը ճապոներենի համար: Համակարգչային ծրագրերը կարող են օգտագործել այն կոդավորումը, որը լավագույնս համապատասխանում է իրենց կարիքներին և սահմանափակումներին:

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Ունե՞ք հարցեր այս թեմայի վերաբերյալ: Մենք կցանկանայինք պատասխանել, պարզապես հարցրեք ստորև ներկայացված հարցերի տարածքում:

Ուզո՞ւմ ես միանալ խոսակցությանը։

Առայժմ հրապարակումներ չկան։
Անգլերեն հասկանո՞ւմ ես: Սեղմիր այստեղ և ավելի շատ քննարկումներ կգտնես «Քան» ակադեմիայի անգլերեն կայքում: