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

Dacă sunteţi în spatele unui filtru de web, vă rugăm să vă asiguraţi că domeniile *. kastatic.org şi *. kasandbox.org sunt deblocate.

Conţinutul principal

Memorarea textului în format binar

Calculatoarele nu memorează doar numere în format binar. Dar cum putem folosi numerele binare pentru a reprezenta altfel de caractere, precum literele și simbolurile?
Se pare că este nevoie doar de puțină cooperare din partea oamenilor. Trebuie să cădem de acord asupra unor codificări, asocierea fiecărui caracter la un număr binar.

Codificare simplă

De exemplu, cum am face să memorăm următoarele simboluri în format binar?
☮️❤️😀
Putem inventa această codificare simplă:
BinarSimbol
01☮️
10❤️
11😀
O vom numi codificare HPE. Este folositor ca sistemele de codificare să aibă nume, astfel încât programatorii să se asigure că folososc același tip de codificare.
Dacă un calculator trebuie să memoreze simbolul ❤️, poate memora în schimb 10. Când programul afișează 10 pe ecranul utilizatorului, el va folosi codificarea HPE și va afișa ❤️ în locul numărului binar.
Programele și fișierele de pe calculator trebuie adesea să memoreze mai multe caractere și fac asta înșiruind codificările caracterelor din acel șir.
Un program ar putea crea un fișier numit "msj.hpe" care să conțină aceste date:
010111111010
Un program aflat pe un alt calculator, care înțelege codificarea HPE, poate deschide mai târziu fișierul "msj.hpe" și afișa secvența de simboluri.
Verifică dacă ai înțeles
Ce secvență va afișa programul?
Alege un răspuns:

Codificarea HPE folosește doar 2 biți, limitând numărul de simboluri ce pot fi reprezentate.
Verifică dacă ai înțeles
Câte simboluri se pot reprezenta prin codificarea cu 2 biți?
  • Your answer should be
  • un întreg, precum 6
  • o fracție subunitară ireductibilă, precum 3/5
  • o fracție supraunitară simplificată, precum 7/4
  • un număr compus, precum 1 3/4
  • un număr zecimal exact, precum 0,75
  • un multiplu al lui pi, precum 12 pi sau 2/3 pi

Dar, cu mai mulți biți de informație, calculatoarele pot codifica destule litere pentru mesaje, documente și pagini web.

Coduri ASCII

ASCII este unul dintre primele sisteme de codificare. A fost inventat în anii 1960, când telegrafia era forma principală de comunicare la distanță, dar se folosește și astăzi pe calculatoare moderne.
Dactilografii tastau mesajele la telegraf astfel:
Imagine a unei tiparnițe de telegraf, compusă dintr-o tastatură mecanică, o coală de hârtie pe care sunt scrise litere și un mecanism care citește mesajele
O tiparniță de telegraf ASR 33. Sursă imagine: Marcin Wichary
Imprimanta folosea apoi codul ASCII pentru a transforma fiecare caracter în format binar și memora sau transmitea mai departe datele binare.
Această pagină dintr-un manual de telegraf din 1972 prezintă cele 128 de coduri ASCII:
Imagine scanată a unui tabel de codificare ASCII.
Tabel ASCII de la o imprimantă TermiNet 300. Sursă imagine: Wikipedia
Fiecare caracter ASCII este scris în format binar folosind 7 biți. În tabelul de mai sus antetul coloanei indică primii 3 biți, iar începutul liniei indică ultimii 4 biți. Primul caracter este "NUL", codificat ca 0000000.
Primele 32 de coduri reprezintă "caractere de control", mai exact caractere care au alt efect decât tipărirea unei litere. "BEL" (scris în format binar ca 0000111) produce un sunet de clopoțel (în engleză "bell") sau un bip. "ENQ" (binar 0000101) reprezintă o întrebare (în engleză "enquiry"), o cerere către stația care receptează mesajul să se identifice.
Caracterele de control au fost proiectate inițial pentru teleprintere și telegrafie, dar multe dintre ele au fost regândite pentru calculatoarele moderne și internet—mai ales "CR" și "LF". "CR" (0001101) care se foloseau pentru "carriage return" la teleprintere, care însemna mutarea capului de scriere la începutul rândului. "LF" (0001010) reprezenta "line feed", mutarea capului de scriere cu un rând mai jos. Protocoalele moderne de Internet, precum HTTP, FTP și SMTP, folosesc combinația "CR" + "LF" pentru a reprezenta sfârșitul de linie.
Restul de 906 de caracatere ASCII arată mult mai familiar.
Iată mai jos primele 8 litere mari:
BinaryCharacter
1000001A
1000010B
1000011C
1000100D
1000101E
1000110F
1000111G
1001000H
Conform standardului ASCII, putem codifica un mesaj de patru litere în format binar:
1000011100100010001011000110
Verifică dacă ai înțeles
Ce cuvânt reprezintă aceste date binare codificate cu ASCII?
Alege un răspuns:

Cu toate acestea, există mai multe probleme legate de codificarea ASCII.
Prima mare problemă este că ASCII include doar litere din alfabetul englez şi un set limitat de simboluri.
O limbă care folosește mai puțin de 128 de caractere ar putea veni cu propria versiune de ASCII pentru a codifica textul doar în acea limbă, dar cum rămâne cu un fişier text cu caractere din mai multe limbi? ASCII nu a putut codifica un şir ca acesta: "Bună ziua, Jose·, ai putea avea grijă de Glu<unk> hwein? Costă 10 euro".
Şi ce se întâmplă cu limbile cu mii de logograme? ASCII nu a putut codifica destule logograme pentru a acoperi o propoziţie chinezească ca "你好,想要一盘饺子吗?十块钱。"
Cealaltă problemă cu codificarea ASCII este că folosește 7 biți pentru a reprezenta fiecare caracter, în timp ce calculatoarele stochează de obicei informații pe octeți—unități de 8 biți-iar programatorilor nu le place să irosească memoria.
La începuturi, când primele calculatoare au început să folosească ASCII pentru codificarea caracterelor, fiecare venea cu propria soluție pentru utilizarea bitului final. De exemplu, calculatoarele HP utilizau al optulea bit pentru a reprezenta caracterele din țările europene (de exemplu, "£" și "Ü"), calculatoarele TRS-80 foloseau acel bit pentru grafica color, iar calculatoarele Atari pentru versiunea alb-pe-negru a primelor 128 de caractere. 2
Rezultatul? Un fişier "ASCII" creat într-o aplicaţie ar putea arăta ca o bolboroseală atunci când este deschis într-o altă aplicaţie compatibilă "ASCII".
Calculatoarele aveau nevoie de o nouă codificare, o codificare bazată pe octeți de 8 biți care să poată reprezenta toate limbile lumii.

Unicode

Oare de câte caractere am avea nevoie pentru a reprezenta limbile lumii? Care caractere sunt cam aceleași în mai multe limbi, chiar dacă ele se pronunță diferit?
În 1987, un grup de ingineri informaticieni a încercat să răspundă la aceste întrebări. Ei au venit în cele din urmă cu Unicode, un set de caractere universale care atribuie fiecăruia câte un "punct de cod" (un număr hexazecimal) şi un nume fiecărui caracter. 3
De exemplu, caracterul "ą" este atribuit lui "U+0105" și numit "Litera latină mică A cu Ogonek". Există un caracter care seamănă cu "ą" în 13 limbi, precum poloneză şi lituaniană. Astfel, potrivit Unicode, "ą" în cuvântul polonez "robią" şi "ą" în cuvântul "aslą" din lituaniană se reprezintă cu acelaşi caracter. Unicode salvează spaţiul prin corelarea caracterelor din toate limbile.
Dar mai există încă destul de multe caractere de codificat. Setul de caractere Unicode a început cu 7.129 de caractere cunoscute în 1991 și a crescut la 137.929 de caractere în 2019. Majoritatea acelor caractere descriu logograme din chineză, japoneză și coreeană, cum ar fi „U+6728” care se referă la "木". De asemenea, include peste 1.200 de simboluri emoji ("U+1F389" = "🎉"). 4
Unicode este un set de caractere, dar nu este o codificare. Din fericire, un alt grup de ingineri a abordat problema codificării eficiente a Unicode în binar.

UTF-8

În 1992, informaticienii au inventat UTF-8, o codificare compatibilă cu ASCII şi care rezolvă problemele apărute. 5
UTF-8 poate descrie fiecare caracter din standardul Unicode folosind 1, 2, 3 sau 4 octeți.
Atunci când un program pentru calculator citește un fișier text UTF-8, ştie câţi octeţi reprezintă următorul caracter în funcție de câți biţi 1 găseşte la începutul octetului (byte-ului).
Număr de octețiOctet 1Octet 2Octet 3Octet 4
10xxxxxxx
2110xxxxx10xxxxxx
31110xxxx10xxxxxx10xxxxxx
411110xxx10xxxxxx10xxxxxx10xxxxxx
Dacă nu există nici un bit 1 în prefix (dacă primul bit este un 0), atunci avem un caracter reprezentat pe un singur octet. Ceilalți 7 biţi ai octetului sunt utilizaţi pentru a reprezenta cele 128 de caractere ASCII originale. Aceasta înseamnă că o secvență de caractere ASCII de 8 biți este, de asemenea, o secvență valabilă UTF-8.
Doi octeți care încep cu 110 sunt utilizați pentru a codifica restul caracterelor din limbile script-ului latin (de exemplu, spaniolă, germană) plus alte limbi precum greaca, ebraica și araba. Trei octeţi începând cu 1110 codifică majoritatea caracterelor pentru limbile asiatice (de exemplu, chineză, japoneză, coreeană). Patru octeţi începând cu 11110 codifică orice altceva, de la scripturi istorice folosite rar, până la simbolurile emoji utilizate din ce în ce mai frecvent.
Verifică dacă ai înțeles
Conform standardului UTF-8, câte caractere sunt reprezentate de aceşti 8 octeţi?
0100100111110000100111111001001010011001111000101001001110001010
  • Your answer should be
  • un întreg, precum 6
  • o fracție subunitară ireductibilă, precum 3/5
  • o fracție supraunitară simplificată, precum 7/4
  • un număr compus, precum 1 3/4
  • un număr zecimal exact, precum 0,75
  • un multiplu al lui pi, precum 12 pi sau 2/3 pi

Majoritatea limbajelor moderne de programare au încorporat suport pentru UTF-8, astfel încât majoritatea programatorilor nu au nevoie niciodată să știe exact cum să convertească caracterele în binar.
✏️ Folosind JavaScript, încearcă să codifici șiruri în UTF-8, în forma de mai jos. Joacă-te cu mai multe limbaje și simboluri..
Standardul de codificare UTF-8 reprezintă acum codificarea dominantă a fișierelor HTML pe web, reprezentând 94,5% din paginile web începând cu decembrie 2019. 6
🔎 Dacă dai clic dreapta pe această pagină și selectezi "view page source", poți căuta șirul "utf-8" și ai să vezi că această pagină web este codificată cu UTF-8.
În general, o bună codificare este una care poate reprezenta cantitatea maximă de informații cu cel mai mic număr de biți. UTF-8 este un exemplu excelent în acest sens, din moment ce poate codifica literele obișnuite din engleză cu doar 1 octet, dar este suficient de flexibil pentru a codifica mii de litere cu octeți în plus.
UTF-8 este, totuși, doar una dintre codificările posibile. UTF-16 și UTF-32 sunt codificări alternative care pot reprezenta, de asemenea, toate caracterele Unicode. Mai există și codificări specifice limbii, cum ar fi Shift-JIS pentru japoneză. Programele de calculator pot utiliza codificarea care se potrivește cel mai bine nevoilor și constrângerilor lor.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Ai vreo întrebare pe acest subiect? Ne-ar face plăcere să îți răspundem— nu ai decât să pui întrebarea în spațiul de mai jos!