Vés al contingut

Caràcter (tipus de dada)

De la Viquipèdia, l'enciclopèdia lliure

En terminologia informàtica i de telecomunicacions, un caràcter és una unitat d'informació que es correspon aproximadament amb una grafema o amb una unitat o símbol semblant, com els d'un alfabet o sil·labari de la forma escrita d'un llenguatge natural.

Un exemple de caràcter és una lletra, un nombre o un signe de puntuació. El concepte també comprèn als caràcters de control, que no es corresponen amb símbols del llenguatge natural sinó amb altres fragments d'informació usats per processar textos, tals com el retorn de carro i el tabulador, així com instruccions per a impressores i altres dispositius que mostren els esmentats textos.

Codificació de caràcters

[modifica]

Els ordinadors i els equips de comunicacions representen caràcters mitjançant l'ús d'una codificació que assigna un valor a cada caràcter (normalment un valor enter representat per una seqüència de bits) que pot ser emmagatzemat o transmès per una xarxa. La codificació més comuna era fins fa poc l'ASCII, però actualment s'està fent més popular l'Unicode. Un exemple de codificació no digital pot ser el codi Morse, que en lloc d'usar bits representa els caràcters mitjançant una sèrie d'impulsos elèctrics de longitud variable (punts i ratlles).

Terminologia

[modifica]

Històricament, el terme «caràcter» ha estat usat àmpliament pels professionals de la indústria per referir-se a un «caràcter codificat» (exposat sovint només mitjançant l'API d'un llenguatge de programació). De la mateixa manera, el terme conjunt de caràcters (character set) ha estat usat generalment per al·ludir a un repertori específic de «caràcters abstractes» que havien estat codificats mitjançant seqüències de bits específiques.

En alguns contextos és important fer la distinció que un caràcter és una unitat d'informació i, per tant, no implica cap manifestació visual particular. Per exemple, la lletra hebrea àlef (א) és usada sovint pels matemàtics per denotar certs tipus d'infinit, però també s'usa en textos hebreus corrents. En l'Unicode, ambdós usos tenen caràcters diferents als quals corresponen dos codis diferents, encara que puguin ser representats exactament igual. En canvi, el logograma xinès per l'aigua (水) pot tenir una aparença lleugerament diferent en textos xinesos i japonesos, la qual cosa pot veure's reflectida en els tipus de lletra locals, però representen, malgrat això, la mateixa informació, pel que es considera un únic caràcter.

El terme «glif» s'usa per descriure una aparença física particular d'un caràcter. Moltes fonts d'ordinador consisteixen en glifs indexats segons el codi Unicode del caràcter que cada un representa.

La definició de «caràcter» o «caràcter abstracte» és, segons l'estàndard Unicode i l'ISO/IEC 10646, «un membre d'un conjunt d'elements usat per a l'organització, control o representació de dades». La definició d'Unicode afegeix una sèrie de notes explicatives animant el lector a distingir entre caràcters, grafemes i glifs, entre altres coses. L'estàndard també distingeix entre aquests caràcters abstractes i els «caràcters codificats» que ja han estat aparellats amb codis numèrics per facilitar la seva representació en sistemes informàtics.

char

[modifica]

En C, char (abreviatura de *character*, caràcter) és un tipus de dada amb una mida d’un byte,[1][2] però, a diferència de la mida de facto del byte com a 8 bits, aquest ús de *byte* és menys específic. El byte es defineix com prou gran per contenir qualsevol membre del «conjunt bàsic de caràcters d’execució». El nombre de bits utilitzats per un compilador és accessible mitjançant la macro CHAR_BIT. Amb molta diferència, la mida més comuna és de 8 bits, i POSIX *requereix* que sigui de 8 bits.[3] En els estàndards moderns de C, char ha de poder contenir unitats de codi UTF-8,[1][2] cosa que requereix una mida *mínima* de 8 bits.

Com que un punt de codi Unicode pot requerir fins a 21 bits,[4] el tipus char generalment no és prou gran per a cada caràcter. Tot i així, el tipus char és molt adequat per a la codificació UTF-8, on cada punt de codi requereix d’1 a 4 bytes.

El fet que històricament un caràcter s’emmagatzemés en un sol byte ha fet que els termes «char» i «caràcter» s’utilitzin indistintament, i això provoca confusió avui dia quan s’empren codificacions multibyte com ara UTF-8. La documentació moderna de POSIX intenta corregir-ho definint «caràcter» com una seqüència d’un o més bytes que representen un únic símbol gràfic o codi de control, i utilitza «byte» quan es refereix a dades de tipus char.[5][6][7] Tanmateix, encara conté errors, com ara definir una matriu de char com una *matriu de caràcters* (en lloc d’una *matriu de bytes*).[8]

Unicode es pot emmagatzemar en cadenes d’unitats de codi que són més grans que char, anomenades caràcters amples. El tipus original de C s’anomenava wchar_t. A causa que algunes plataformes defineixen wchar_t com a 16 bits i d’altres com a 32 bits, les versions actuals proporcionen els tipus inequívocs char16_t i char32_t. Fins i tot així, els objectes emmagatzemats poden no ser caràcters; per exemple, el UTF-16 de longitud variable sovint s’emmagatzema en matrius de char16_t.

Altres llenguatges també tenen un tipus char. Molts, incloent-hi C++, utilitzen bytes de 8 bits com C.[2] D’altres, com Java, utilitzen emmagatzematge ample de 2 bytes per acomodar més directament UTF-16.

Vegeu també

[modifica]

Referències

[modifica]
  1. 1 2 «§5.2.4.2.1 Sizes of integer types <limits.h> / §6.2.5 Types / §6.5.3.4 The sizeof and _Alignof operators». A: ISO/IEC 9899:2018 - Information technology -- Programming languages -- C.
  2. 1 2 3 «§1.7 The C++ memory model / §5.3.3 Sizeof». A: ISO/IEC 14882:2011.
  3. «<limits.h>». [Consulta: 28 gener 2026].
  4. «Glossary of Unicode Terms – Code Point». [Consulta: 28 gener 2026].
  5. «POSIX definition of Character». [Consulta: 28 gener 2026].
  6. «kí tự đặc biệt» (en anglès), 23-07-2025. [Consulta: 28 gener 2026].
  7. «POSIX strlen reference». [Consulta: 28 gener 2026].
  8. «POSIX definition of Character Array». [Consulta: 28 gener 2026].

Enllaços externs

[modifica]
  • ISO/IEC TR 15285:1998, Arxivat 2008-02-16 a Wayback Machine. resum del model de caràcters ISO/IEC, centrat en les definicions terminològiques i la diferència entre caràcters i glifs (anglès)