stringtranslate.com

Персонаж (вычислительная техника)

Диаграмма строковых данных в вычислениях. Показывает слово «пример» с каждой буквой в отдельном поле. Слово «Строка» находится выше и относится ко всему предложению. Метка «Символ» находится ниже и указывает на отдельное поле.
Строка из семи символов

В терминологии компьютерных и машинных телекоммуникаций символ — это единица информации , которая примерно соответствует графеме , графемоподобной единице или символу , например, в алфавите или слоговой азбуке в письменной форме естественного языка . [1]

Примерами символов являются буквы , цифры , общие знаки препинания (например, "." или "-") и пробелы . Это понятие также включает в себя управляющие символы , которые не соответствуют видимым символам, а скорее инструкциям по форматированию или обработке текста. Примерами управляющих символов являются возврат каретки и табуляция , а также другие инструкции для принтеров или других устройств, которые отображают или иным образом обрабатывают текст.

Символы обычно объединяются в строки .

Исторически термин символ использовался для обозначения определенного количества смежных бит . Хотя сегодня принято считать, что символ относится к 8 битам (одному байту ), когда-то были популярны другие варианты, такие как 6-битный код символа [2] [3] , а 5-битный код Бодо также использовался в прошлом. Термин даже применялся к 4 битам [4] всего с 16 возможными значениями. Все современные системы используют последовательность этих фиксированных частей переменного размера, например, UTF-8 использует различное количество 8-битных кодовых единиц для определения « кодовой точки », а Unicode использует различное количество таких единиц для определения «символа».

Кодирование

Компьютеры и коммуникационное оборудование представляют символы с помощью кодировки символов , которая назначает каждому символу что-то — целочисленное значение, представленное последовательностью цифр , как правило, — что может быть сохранено или передано по сети . Двумя примерами обычных кодировок являются ASCII и кодировка UTF-8 для Unicode . В то время как большинство кодировок символов сопоставляют символы с числами и/или битовыми последовательностями, азбука Морзе вместо этого представляет символы с помощью серии электрических импульсов различной длины.

Терминология

Исторически термин «символ» широко использовался профессионалами отрасли для обозначения закодированного символа , часто определяемого языком программирования или API . Аналогично, термин «набор символов» широко использовался для обозначения определенного набора символов, сопоставленных с определенными последовательностями битов или числовыми кодами. Термин «глиф» используется для описания определенного визуального вида символа. Многие компьютерные шрифты состоят из глифов, которые индексируются числовым кодом соответствующего символа.

С появлением и широким распространением Unicode [5] и наборов кодированных символов , не зависящих от бита , [ необходимо разъяснение ] символ все чаще рассматривается как единица информации , независимая от какого-либо конкретного визуального проявления. Международный стандарт ISO/IEC 10646 (Unicode) определяет символ или абстрактный символ как «член набора элементов, используемых для организации, управления или представления данных». Определение Unicode дополняет это пояснительными примечаниями, которые побуждают читателя различать символы, графемы и глифы, среди прочего. Такое различие является примером более широкой темы разделения представления и содержания .

Например, еврейская буква алеф ("א") часто используется математиками для обозначения определенных видов бесконечности (ℵ), но она также используется в обычном еврейском тексте. В Unicode эти два использования считаются разными символами и имеют два разных числовых идентификатора Unicode (" кодовые точки "), хотя они могут отображаться одинаково. И наоборот, китайская логограмма для воды ("水") может иметь немного другой вид в японских текстах, чем в китайских, и местные шрифты могут это отражать. Но тем не менее в Unicode они считаются одним и тем же символом и имеют одну и ту же кодовую точку.

Стандарт Unicode также различает эти абстрактные символы и кодированные символы или закодированные символы , которые были сопряжены с числовыми кодами, облегчающими их представление в компьютерах.

Сочетание характера

Символ объединения также рассматривается Unicode. Например, Unicode выделяет кодовую точку для каждого из

Это позволяет кодировать средний символ слова «naïve» либо как один символ «ï», либо как комбинацию символа «i» с комбинационным диэрезисом: (U+0069 ЛАТИНСКАЯ СТРОЧНАЯ БУКВА I + U+0308 КОМБИНИРОВАННЫЙ ДИЭРЕЗ); это также отображается как «ï» .

Стандарт Unicode считает их канонически эквивалентными.

чар

Символ в языке программирования C это тип данных размером ровно в один байт , [6] [7], который, в свою очередь, определяется как достаточно большой, чтобы содержать любого члена «базового набора символов выполнения». Точное количество бит можно проверить с помощью макроса. Наиболее распространенный размер — 8 бит, и стандарт POSIX требует, чтобы он был 8 бит. [8] В более новых стандартах C символ должен содержать кодовые единицы UTF-8 [6] [7] , для чего требуется минимальный размер в 8 бит.CHAR_BIT

Кодовая точка Unicode может потребовать до 21 бита. [9] Это не поместится в символ в большинстве систем, поэтому для некоторых из них используется больше одного бита, как в кодировке переменной длины UTF-8 , где каждая кодовая точка занимает от 1 до 4 байтов. Кроме того, «символ» может потребовать больше одного кодового пункта (например, с комбинированными символами ), в зависимости от того, что подразумевается под словом «символ».

Тот факт, что символ исторически хранился в одном байте, привел к тому, что два термина («char» и «character») стали использоваться взаимозаменяемо в большинстве документов. Это часто делает документацию запутанной или вводящей в заблуждение при использовании многобайтовых кодировок, таких как UTF-8, и привело к неэффективным и неправильным реализациям функций обработки строк (таких как вычисление «длины» строки как количества кодовых единиц, а не байтов). Современная документация POSIX пытается исправить это, определяя «character» как последовательность из одного или нескольких байтов, представляющих один графический символ или управляющий код, и пытается использовать «byte» при ссылке на данные char. [10] [11] Однако она все еще содержит ошибки, такие как определение массива char как массива символов (а не массива байтов ). [12]

Unicode также может храниться в строках, состоящих из кодовых единиц, которые больше, чем char . Они называются « широкими символами ». Первоначальный тип C назывался wchar_t . Поскольку некоторые платформы определяют wchar_t как 16 бит, а другие определяют его как 32 бита, в последних версиях были добавлены char16_t , char32_t . Даже в этом случае сохраняемые объекты могут не быть символами, например, UTF-16 переменной длины часто хранится в массивах char16_t .

Другие языки также имеют тип char . Некоторые, такие как C++, используют по крайней мере 8 бит, как C. [7] Другие, такие как Java, используют 16 бит для char , чтобы представлять значения UTF-16.

Смотрите также

Ссылки

  1. ^ "Определение ХАРАКТЕРА". Merriam-Webster . Получено 01.04.2018 .
  2. ^ Dreyfus, Phillippe (1958). "System design of the Gamma 60". Managing Requirements Knowledge, International Workshop on, Los Angeles . New York. pp. 130–133. doi :10.1109/AFIPS.1958.32. […] Используется внутренний код данных: количественные (числовые) данные кодируются в 4-битном десятичном коде; качественные (буквенно-цифровые) данные кодируются в 6-битном буквенно-цифровом коде. Внутренний код инструкции означает, что инструкции кодируются в прямом двоичном коде. Что касается длины внутренней информации, квант информации называется " catena ", и он состоит из 24 бит, представляющих либо 6 десятичных цифр, либо 4 буквенно-цифровых символа. Этот квант должен содержать кратное 4 и 6 бит, чтобы представить целое число десятичных или буквенно-цифровых символов. Двадцать четыре бита оказались хорошим компромиссом между минимальными 12 битами, которые привели бы к слишком низкому потоку передачи из параллельно считываемой основной памяти, и 36 битами или более, что было оценено как слишком большой информационный квант. Катена должна рассматриваться как эквивалент символа в машинах с переменной длиной слова , но ее нельзя так называть, так как она может содержать несколько символов. Она передается последовательно в основную память и из нее. Не желая называть «квант» словом, а набор символов буквой (слово — это слово, а квант — это что-то еще), было создано новое слово, и оно было названо «катена». Это английское слово, и оно существует в словаре Вебстера, хотя его нет во французском языке. Определение слова «катена» Вебстером — «связанная серия»; следовательно, 24-битный информационный элемент. Слово «катена» будет использоваться далее. Таким образом, был определен внутренний код. Теперь, что такое внешние коды данных? Они зависят в первую очередь от задействованного устройства обработки информации. Gamma 60  [fr] предназначена для обработки информации, относящейся к любой двоично-кодированной структуре. Таким образом, 80-колоночная перфокарта рассматривается как 960-битный информационный элемент; 12 строк, умноженные на 80 колонок, равны 960 возможным перфорациям; хранится как точное изображение в 960 магнитных сердечниках основной памяти с 2 колонками карты, занимающими одну катену. […]


  3. ^ Blaauw, Gerrit Anne ; Brooks Jr., Frederick Phillips ; Buchholz, Werner (1962), "4: Natural Data Units" (PDF) , в Buchholz, Werner (ed.), Planning a Computer System – Project Stretch , McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., стр. 39–40, LCCN  61-10466, заархивировано (PDF) из оригинала 2017-04-03 , извлечено 2017-04-03 , […] Термины, используемые здесь для описания структуры, налагаемой конструкцией машины, в дополнение к биту , перечислены ниже. Байт обозначает группу бит, используемых для кодирования символа, или количество бит, передаваемых параллельно на и из устройств ввода-вывода. Здесь используется термин, отличный от символа , поскольку данный символ может быть представлен в разных приложениях более чем одним кодом, а разные коды могут использовать разное количество бит (т. е. разные размеры байтов). При передаче ввода-вывода группировка бит может быть совершенно произвольной и не иметь никакого отношения к фактическим символам. ( Термин образован от bite , но изменен, чтобы избежать случайной мутации на bit .) Слово состоит из количества бит данных, переданных параллельно из памяти или в память за один цикл памяти. Таким образом, размер слова определяется как структурное свойство памяти. (Термин catena был придуман для этой цели разработчиками компьютера Bull GAMMA 60  [fr] .) Блок относится к количеству слов, переданных в или из устройства ввода-вывода в ответ на одну инструкцию ввода-вывода. Размер блока является структурным свойством устройства ввода-вывода; он может быть фиксированным по конструкции или оставлен на усмотрение программы. […]


  4. ^ "Термины и сокращения". Руководство по программированию на языке ассемблера MCS-4 - Руководство по программированию микрокомпьютерной системы INTELLEC 4 (PDF) (Предварительное издание). Санта-Клара, Калифорния, США: Корпорация Intel . Декабрь 1973 г. стр. v, 2–6. MCS-030-1273-1. Архивировано (PDF) из оригинала 01.03.2020 г. Получено 02.03.2020 г. [ …] Бит — наименьшая единица информации, которая может быть представлена. (Бит может находиться в одном из двух состояний: 0 или 1). […] Байт — группа из 8 смежных битов, занимающая одну ячейку памяти. […] Символ — группа из 4 смежных битов данных. […](Примечание. В этом руководстве по процессору Intel 4004 термин «символ» используется для обозначения 4-битных, а не 8-битных объектов данных . В своей документации для следующего процессора 4040 компания Intel перешла на использование более распространенного термина «полубайт» для 4-битных объектов еще в 1974 году.)
  5. ^ Дэвис, Марк (2008-05-05). "Переход на Unicode 5.1". Блог Google . Получено 28.09.2008 .
  6. ^ ab "§5.2.4.2.1 Размеры целочисленных типов <limits.h> / §6.2.5 Типы / §6.5.3.4 Операторы sizeof и _Alignof". ISO/IEC 9899:2018 - Информационные технологии -- Языки программирования -- C. {{cite book}}: |website=проигнорировано ( помощь )
  7. ^ abc "§1.7 Модель памяти C++ / §5.3.3 Sizeof". ISO/IEC 14882:2011.
  8. ^ "<limits.h>". pubs.opengroup.org . Получено 2018-04-01 .
  9. ^ "Глоссарий терминов Unicode – Кодовая точка" . Получено 2019-05-14 .
  10. ^ «Определение символа в POSIX».
  11. ^ "Ссылка на POSIX strlen".
  12. ^ «Определение массива символов в POSIX».

Внешние ссылки