Znak (výpočet) - Character (computing)

V počítačové a strojové telekomunikační terminologii je znak jednotkou informace, která zhruba odpovídá grafému , jednotce podobné grafému nebo symbolu , například v abecedě nebo slabikáři v psané podobě přirozeného jazyka .

Mezi příklady znaků patří písmena , číslice , běžná interpunkční znaménka (například „.“ Nebo „-“) a mezery . Koncept také obsahuje řídicí znaky , které neodpovídají viditelným symbolům, ale spíše pokynům k formátování nebo zpracování textu. Mezi příklady řídicích znaků patří návrat na začátek řádku nebo tabulátor , stejně jako pokyny pro tiskárny nebo jiná zařízení, která zobrazují nebo jinak zpracovávají text.

Znaky jsou obvykle kombinovány do řetězců .

Historicky byl termín znak používán také k označení určitého počtu souvislých bitů . I když se dnes nejčastěji předpokládá, že znak odkazuje na 8 bitů (jeden bajt ), jiné definice, jako 6bitový znakový kód, byly kdysi populární (používající pouze velká písmena , přičemž dostatek bitů reprezentuje také malá písmena , nikoli s čísly a interpunkcí) povoleno), a dokonce se v minulosti používal dokonce 5bitový Baudotův kód , a přestože byl tento termín také použit na 4 bity s pouze 16 možnými hodnotami, nebyl určen ani nemůže představovat úplný Anglická abeceda. Viz také znaky univerzální znakové sady , kde 8 bitů nestačí k reprezentaci, zatímco všechny mohou být reprezentovány jednou nebo více 8bitovými kódovými jednotkami s UTF-8 .

Kódování

Počítače a komunikační zařízení představují znaky pomocí kódování znaků, které každému znaku přiřadí něco - celočíselné množství reprezentované posloupností číslic , obvykle - které lze uložit nebo přenášet prostřednictvím sítě . Dva příklady obvyklých kódování jsou ASCII a kódování UTF-8 pro Unicode . Zatímco většina kódování znaků mapuje znaky na čísla a/nebo bitové sekvence, Morseova abeceda místo toho představuje znaky využívající řadu elektrických impulsů různé délky.

Terminologie

Historicky byl termín znak odborníky v oboru široce používán k označení kódovaného znaku , často definovaného programovacím jazykem nebo API . Podobně byla znaková sada široce používána k označení konkrétního repertoáru znaků, které byly mapovány na konkrétní bitové sekvence nebo číselné kódy. Termín glyf se používá k popisu konkrétního vizuálního vzhledu postavy. Mnoho počítačových písem se skládá z glyfů, které jsou indexovány číselným kódem odpovídajícího znaku.

S příchodem a rozšířeným přijetím kódovaných znakových sad Unicode a bit-agnostických je znak stále více vnímán jako jednotka informace , nezávislá na konkrétním vizuálním projevu. ISO / IEC 10646 (Unicode) mezinárodní norma definuje povahu , nebo abstraktní charakter jako „člen sady prvků používaných pro organizace, řízení, nebo reprezentaci dat“. Definice Unicode to doplňuje vysvětlujícími poznámkami, které čtenáře vybízejí, aby mimo jiné rozlišoval mezi znaky, grafémy a glyfy. Tato diferenciace je příkladem širšího tématu oddělení prezentace a obsahu .

Například hebrejské písmeno aleph („א“) často používají matematici k označení určitých druhů nekonečna (ℵ), ale používá se také v běžném hebrejském textu. V Unicode jsou tato dvě použití považována za různé znaky a mají dva různé číselné identifikátory Unicode („ body kódu “), ačkoli mohou být vykreslovány identicky. Naopak čínský logogram pro vodu („水“) může mít v japonských textech poněkud odlišný vzhled než v čínských textech a místní písma to mohou odrážet. Ale v Unicode jsou považovány za stejný znak a sdílejí stejný kódový bod.

Standard Unicode také rozlišuje mezi těmito abstraktními znaky a kódovanými znaky nebo kódovanými znaky , které byly spárovány s číselnými kódy, které usnadňují jejich reprezentaci v počítačích.

Kombinace postavy

Kombinací znaků se také zabývat Unicode. Například Unicode každému z nich přiděluje bod kódu

  • 'i' (U+0069),
  • kombinující diaeréza (U+0308), a
  • 'ï' (U+00EF).

To umožňuje kódovat prostřední znak slova „naivní“ buď jako jeden znak „ï“, nebo jako kombinaci znaku „i“ s kombinující diaerézou: (U+0069 LATINSKÝ MALÝ LIST I+U+0308 KOMBINOVANÁ DIAERÉZA); toto je také vykresleno jako „ï“.

Ty jsou standardem Unicode považovány za kanonicky ekvivalentní.

char

Char v programovacím jazyce C je datový typ s velikostí přesně jednoho bajtu , což je definován být dostatečně velký, aby obsahoval člena „znakové sady základním provedení“. Přesný počet bitů lze zkontrolovat pomocí CHAR_BITmakra. Zdaleka nejběžnější velikost je 8 bitů a standard POSIX vyžaduje, aby to bylo 8 bitů. V novějších standardech C je pro uchovávání kódových jednotek UTF-8 vyžadován znak, který vyžaduje minimální velikost 8 bitů.

Unicode code point může vyžadovat tolik jako 21 bitů. To se ve většině systémů nevejde do znaku , takže pro některé z nich se používá více než jeden, jako v kódování UTF-8 s proměnnou délkou, kde každý bod kódu trvá 1 až 4 bajty. Kromě toho může „znak“ vyžadovat více než jeden bod kódu (například s kombinováním znaků ), v závislosti na tom, co se rozumí slovem „znak“.

Skutečnost, že znak byl historicky uložen v jednom bajtu, vedla k tomu, že ve většině dokumentace byly dva termíny („char“ a „znak“) používány zaměnitelně. To často dělá dokument matoucí nebo zavádějící při použití vícebajtových kódování, jako je UTF-8, a vedlo k neefektivním a nesprávným implementacím funkcí manipulace s řetězci (jako je například výpočet „délky“ řetězce jako počtu kódových jednotek, nikoli bajtů). Moderní dokumentace POSIX se to pokouší opravit, definuje „znak“ jako posloupnost jednoho nebo více bajtů představujících jeden grafický symbol nebo kontrolní kód a pokouší se použít „bajt“ při odkazování na char data. Stále však obsahuje chyby, jako je definování pole znaků jako pole znaků (spíše než pole bajtů ).

Unicode lze také uložit do řetězců tvořených kódovými jednotkami, které jsou větší než znak . Říká se jim „ široké postavy “. Původní typ C se nazýval wchar_t . Vzhledem k tomu, že některé platformy definují wchar_t jako 16 bitů a jiné jej definují jako 32 bitů, nedávné verze přidaly char16_t , char32_t . I když ukládané objekty nemusí být znaky, například UTF-16 s proměnnou délkou je často uložen v polích char16_t .

Jiné jazyky mají také typ char . Některé, jako například C ++, používají 8 bitů jako C. Jiné, například Java, používají 16 bitů pro char , aby reprezentovaly hodnoty UTF-16.

Viz také

Reference

externí odkazy