Caracter (informatică)

În terminologia telecomunicațiilor prin calculatoare și mașini, un caracter este o unitate de informație care corespunde aproximativ unui grafem, unei unități grafemice sau unui simbol, ca cele dintr-un alfabet sau silabar, în forma scrisă a unui limbaj natural.

Exemple de caractere includ litere, cifre, semne de punctuație comune (cum ar fi „.” Sau „-”) și spațiul. Conceptul include, de asemenea, caractere de control, care nu corespund simbolurilor vizibile, ci mai degrabă reprezintă instrucțiuni de formatare sau procesare a textului. Exemple de caractere de control includ returul de car sau tasta tabulator (Tab), precum și instrucțiuni pentru imprimante sau alte dispozitive care afișează sau prelucrează text în alt mod.

Caracterele se combină de obicei în șiruri de caractere.

Istoric, termenul de caracter a fost folosit de asemenea pentru a denumi un număr specific de biți contigui. În timp ce un „caracter” face referire cel mai frecvent la 8 biți (un octet), alte definiții, cum ar fi de 4 sau 6 biți au fost utilizate în trecut.

Codificare

Calculatoarele și echipamentele de comunicare reprezintă caracterele folosind un sistem de codificare care atribuie fiecărui caracter o cheie – de obicei, un număr întreg (adică o secvență de cifre) – care pot fi stocate sau transmise printr-o rețea. Două exemple de codificări des întâlnite sunt ASCII și codificarea UTF-8 de la Unicode. În timp ce majoritatea codificărilor de caractere asociază fiecare caracter cu un număr și/sau o secvență de biți, codul Morse reprezintă în schimb caractere folosind o serie de impulsuri electrice de lungime variabilă.

Terminologie

Istoric, termenul de „caracter” a fost utilizat pe scară largă de către cei din industria informaticii și telecomunicațiilor pentru a se referi la un „caracter codificat”, adesea așa cum este definit de limbajul de programare sau de un API. De asemenea, „set de caractere” a fost utilizat pentru a face referire la un repertoriu specific de caractere care au fost asociate unor secvențe specifice de biți sau coduri numerice. Termenul „glifă” este folosit pentru a descrie aspectul vizual particular al unui caracter. Multe fonturi de calculator constau din glife care sunt indexate cu codul numeric specific al caracterului respectiv.

Odată cu apariția și acceptarea pe scară largă a Unicode, caracterele au început să fie privite ca unități de informație în sine, independente de orice manifestare vizuală particulară. Standardul internațional ISO/IEC 10646 (Unicode) definește caracterul sau caracterul abstract ca „un membru al unei mulțimi de elemente utilizat pentru organizarea, controlul sau reprezentarea datelor”. Definiția Unicode completează acest lucru cu note explicative care încurajează cititorul să diferențieze între caractere, grafeme și glife, printre altele. O astfel de diferențiere este o parte mică a temei mai largi a separării prezentării de conținutul propriu-zis.

De exemplu, litera ebraică aleph („א”) este adesea folosită de matematicieni pentru a denumi anumite tipuri de infinit, dar este folosită și în textele ebraice obișnuit. În Unicode, aceste două utilizări sunt considerate a fi caractere diferite și au două identificatoare numerice Unicode diferite („puncte de cod”), deși pot fi redate identic. În schimb, logograma chinezească pentru apă („水”) poate avea un aspect ușor diferit în textele japoneze decât în textele chineze, iar fonturile specifice pentru fiecare limbă pot reflecta acest lucru. Dar, totuși, în Unicode, ele sunt considerate același caracter și au același punct de cod.

Standardul Unicode diferențiază, de asemenea, între aceste caractere abstracte și caracterele codificate care au fost asociate cu coduri numerice care facilitează reprezentarea lor în calculatoare.

Caractere pentru combinare

Caracterele pentru combinare sunt de asemenea acceptate de Unicode. De exemplu, Unicode alocă un punct de cod fiecăruia dintre următoarele:

  • litera simplă „i” (punct de cod U+0069),
  • trema pentru combinare (U+0308) și
  • litera „ï” cu tremă (U+00EF).

Acest lucru face posibilă codificarea caracterului „ï” fie ca el în sine (U+00EF LATIN SMALL LETTER I WITH DIAERESIS), fie ca o combinație a caracterului „i” cu trema pentru combinare: (U+0069 LATIN SMALL LETTER I și U+0308 COMBINING DIAERESIS), ambele fiind redate ca „ï”.

Acestea sunt considerate canonic echivalente de standardul Unicode.

char

Un char în limbajul de programare C este un tip de date cu dimensiunea de exact un octet, care, la rândul său, este definit ca fiind suficient de mare pentru a conține orice membru al „mulțimii de caractere pentru execuția de bază”. Numărul exact de biți poate fi verificat prin intermediul macro-ului CHAR_BIT. De departe, dimensiunea cea mai obișnuită este de 8 biți, iar standardul POSIX cere ca acesta să fie de 8 biți. În cele mai noi standarde C, char trebuie să conțină unități de cod UTF-8 care necesită o dimensiune minimă de 8 biți.

Un punct de cod Unicode necesită 21 biți. Acesta nu se va încadra într-un char pe majoritatea sistemelor, astfel încât mai multe unități char trebuie utilizate pentru unele caractere, ca în codificarea cu lungime variabilă UTF-8, unde fiecare punct de cod ia între 1 și 4 octeți. Mai mult, un „caracter” poate necesita mai mult de un punct de cod (de exemplu, atunci când se folosesc caractere de combinare), în funcție de ceea ce se înțelege prin cuvântul „caracter”.

Faptul că un caracter era păstrat în trecut într-un singur octet a dus la utilizarea celor doi termeni („char” și „caracter”) interschimbabil în majoritatea documentațiilor. Acest lucru face adesea ca documentația să fie derutantă sau înșelătoare atunci când se utilizează codificări multioctet, cum ar fi UTF-8, și a dus la implementări ineficiente și incorecte ale funcțiilor de manipulare a șirurilor de caractere (cum ar fi calcularea lungimii unui șir ca număr de unități de cod, mai degrabă decât octeți). Documentația modernă POSIX încearcă să remedieze acest lucru, definind „caracterul” ca o secvență de unul sau mai mulți octeți reprezentând un singur simbol grafic sau caracter de control și încearcă să utilizeze „octet” atunci când se referă la datele char. Cu toate acestea, conține în continuare erori, cum ar fi definirea unui șir de char ca un tablou de caractere (mai degrabă decât un tablou de octeți).

Unicode poate fi stocat și în șiruri alcătuite din unități de cod mai mari decât char. Acestea se numesc „caractere largi”. Tipul C inițial a fost numit wchar_t . Din cauza unor platforme care definesc wchar_t ca 16 biți și altele care îl definesc ca 32 biți, versiunile recente au adăugat char16_t, char32_t. Chiar și atunci obiectele stocate ar putea să nu fie caractere, de exemplu, codificarea cu lungimea variabilă UTF-16 este adesea stocată în tablouri de char16_t.

Și alte limbi au un tip de date char. Unele, precum C++, folosesc 8 biți la fel ca C. Altele, cum ar fi Java, folosesc 16 biți pentru char pentru a reprezenta valorile UTF-16.


Referințe

  1. „Definition of CHARACTER”. www.merriam-webster.com. Accesat în .
  2. Davis, Mark (). „Moving to Unicode 5.1”. Google Blog. Accesat în .
  3. „§1.7 The C++ memory model / §5.3.3 Sizeof”. ISO/IEC 14882:2011.
  4. „<limits.h>”. pubs.opengroup.org. Accesat în .
  5. „Glossary of Unicode Terms Code Point”. Accesat în .
  6. „POSIX definition of Character”.
  7. „POSIX strlen reference”.
  8. „POSIX definition of Character Array”.
  9. Goyvaerts, Jan. „Regexp Tutorial - Character Classes or Character Sets”. www.regular-expressions.info. Accesat în .
  10. „Terms And Abbreviations”. MCS-4 Assembly Language Programming Manual - The INTELLEC 4 Microcomputer System Programming Manual (PDF) (ed. Preliminary). Santa Clara, California, USA: Intel Corporation. decembrie 1973. pp. v, ((2–6)). MCS-030-1273-1. Arhivat din original (PDF) la . Accesat în . […] Bit - The smallest unit of information which can be represented. (A bit may be in one of two states I 0 or 1). […] Byte - A group of 8 contiguous bits occupying a single memory location. […] Character - A group of 4 contiguous bits of data. […] (NB. This Intel 4004 manual uses the term character referring to 4-bit rather than 8-bit data entities. Intel switched to use the more common term nibble for 4-bit entities in their documentation for the succeeding processor 4040 in 1974 already.)
  11. Dreyfus, Phillippe (). System design of the Gamma 60. New York. pp. 130–133. doi:10.1109/AFIPS.1958.32. […] Internal data code is used: Quantitative (numerical) data are coded in a 4-bit decimal code; qualitative (alpha-numerical) data are coded in a 6-bit alphanumerical code. The internal instruction code means that the instructions are coded in straight binary code.
    As to the internal information length, the information quantum is called a "catena," and it is composed of 24 bits representing either 6 decimal digits, or 4 alphanumerical characters. This quantum must contain a multiple of 4 and 6 bits to represent a whole number of decimal or alphanumeric characters. Twenty-four bits was found to be a good compromise between the minimum 12 bits, which would lead to a too-low transfer flow from a parallel readout core memory, and 36 bits or more, which was judged as too large an information quantum. The catena is to be considered as the equivalent of a character in variable word length machines, but it cannot be called so, as it may contain several characters. It is transferred in series to and from the main memory.
    Not wanting to call a "quantum" a word, or a set of characters a letter, (a word is a word, and a quantum is something else), a new word was made, and it was called a "catena." It is an English word and exists in Webster's although it does not in French. Webster's definition of the word catena is, "a connected series;" therefore, a 24-bit information item. The word catena will be used hereafter.
    The internal code, therefore, has been defined. Now what are the external data codes? These depend primarily upon the information handling device involved. The Gamma 60(fr) is designed to handle information relevant to any binary coded structure. Thus an 80-column punched card is considered as a 960-bit information item; 12 rows multiplied by 80 columns equals 960 possible punches; is stored as an exact image in 960 magnetic cores of the main memory with 2 card columns occupying one catena. […]
    Parametru necunoscut |book-title= ignorat (ajutor)
  12. Blaauw, Gerrit Anne; Brooks, Jr., Frederick Phillips; Buchholz, Werner (), „4: Natural Data Units”, În Buchholz, Werner, Planning a Computer System – Project Stretch (PDF), McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., pp. 39–40, LCCN 61-10466, arhivat din original (PDF) la , accesat în , […] Terms used here to describe the structure imposed by the machine design, in addition to bit, are listed below.
    Byte denotes a group of bits used to encode a character, or the number of bits transmitted in parallel to and from input-output units. A term other than character is used here because a given character may be represented in different applications by more than one code, and different codes may use different numbers of bits (i.e., different byte sizes). In input-output transmission the grouping of bits may be completely arbitrary and have no relation to actual characters. (The term is coined from bite, but respelled to avoid accidental mutation to bit.)
    A word consists of the number of data bits transmitted in parallel from or to memory in one memory cycle. Word size is thus defined as a structural property of the memory. (The term catena was coined for this purpose by the designers of the Bull GAMMA 60(fr) computer.)
    Block refers to the number of words transmitted to or from an input-output unit in response to a single input-output instruction. Block size is a structural property of an input-output unit; it may have been fixed by the design or left to be varied by the program. […]

Legături externe

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.