De ce este nevoie ca fiecare caracter sa aiba un cod , si cam ce face UNICODE si ASCII asta ? Utlizare practica ? Nu poti pune in memorie direct "a" , sau trebuie sa pui 65 ( ASCII )
In memoria calculatoarelor actuale nu exista decat stari pozitionate in doua moduri, care noi le asociem cu cifrele 0 si 1. Nu exista litera "a". Fiecare litera este reprezentata printr-un numar, cum a spus OSHO. Cum stie ca este o litera, nu un numar ? Din declaratia de tip din program. Deci, doar
programul poate interpreta ce e aia, calculatorul nu.
Istoric, pentru reprezentarea literelor in comunicatii s-a folosit
Codul Baudot, care era un cod pe 5 biti. Asta permitea teletransmisia cu o masina de scris cu o tastatura cu 32 de taste.
Deoarece 5 biti erau un numar nerotund, iar calculatoarele erau pe 8 biti (putere a lui 2) s-au alocat 8 biti pentru un caracter. La inceput prima teletransmisia si lucrurile nu erau foarte clare, asa ca s-a considerat ca din cei 8 biti unul sa fie bit de paritate, asa ca au ramas 7 biti. 7 biti corespundeau la 128 de caractere, cam multe pentru transmiterea mesajelor in limba engleza, asa ca s-au alocat 32 de "coduri" pentru comenzi (control =
Ctrl), codul 127 a fost "rezervat", iar restul de 95 pentru litere mari, mici, cifre si semne uzuale. Asta a dus la tastatura moderna cu 95 de caractere. Tasta Ctrl pur si simplu forteaza la 0 primii 3 biti din caracterul generat de tastatura, obtinandu-se 32 de "comenzi". Asta s-a dorit, dar acum tastaturile nu merg asa, ele genereaza o secventa mult mai lunga decat 8 biti la o apsare. Literele generate au fost stocate in memoria calculatoarelor drept cifre, conform
Codului ASCII. Ulterior s-a constatat ca "bitul de paritate" a ramas nefolosit si i s-au gasit diverse intrebuintari, rezultand "seturi de caractere extinse", dupa capul fiecarui producator.
Normal ca 256 de coduri (mai precis 95 + 128 = 223) nu puteau cuprinde nici macar toate caracterele europene, asa ca s-a trecut la
UTF-8 care s-a dorit o extensie. Ideea a fost ca tot ce incepe cu un 0 este ASCII pe 1 octet, iar ce incepe cu 1 este extensie, pe 1, 2, 3 sau chiar 4 octeti, pe principiul: caracterele folosite des au cod mai scurt, iar cele rare mai lung.
Deoarece 32 biti e cam mult (nu sunt atatea caractere in lume)
Unicode si
UTF-16 incearca sa identifice caracterele existente si sa optimizeze alocarea codurilor. Deocamdata fiecare cu ideea lui...