Персонаж (вычисление)
В компьютерных и машинных телекоммуникаций терминологии символ — это единица информации , которая примерно соответствует графеме , графемоподобной единице или символу , например, в алфавите или слоговом письме в письменной форме естественного языка . [1]
Примеры символов включают буквы , цифры , распространенные знаки препинания (например, «.» или «-») и пробелы . В концепцию также входят управляющие символы , которые соответствуют не видимым символам, а скорее инструкциям по форматированию или обработке текста. Примеры управляющих символов включают возврат каретки и табуляцию, а также другие инструкции для принтеров или других устройств, которые отображают или иным образом обрабатывают текст.
Символы обычно объединяются в строки .
Исторически термин «символ» использовался для обозначения определенного количества смежных битов . Хотя сегодня чаще всего считается, что символ относится к 8 битам (одному байту ), когда-то были популярны и другие варианты, такие как 6-битный код символа . [2] [3] и 5-битный код Бодо также использовался в прошлом. Этот термин даже был применен к 4 битам. [4] всего с 16 возможными значениями. Все современные системы используют последовательность этих фрагментов фиксированного размера разного размера, например, UTF-8 использует различное количество 8-битных кодовых единиц для определения « кодовой точки », а Unicode использует различное количество таких единиц для определения «символа». ".
Кодирование
[ редактировать ]Компьютеры и коммуникационное оборудование представляют символы с использованием кодировки символов , которая присваивает каждому символу что-то ( обычно целое число, представленное последовательностью цифр ), которое может быть сохранено или передано через сеть . Двумя примерами обычных кодировок являются ASCII и кодировка UTF-8 для Unicode . В то время как большинство кодировок символов отображают символы в числа и/или битовые последовательности, код Морзе вместо этого представляет символы, используя серию электрических импульсов различной длины.
Терминология
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( январь 2019 г. ) |
Исторически термин «символ» широко использовался профессионалами отрасли для обозначения закодированного символа , часто определенного языком программирования или API . Аналогичным образом, набор символов широко использовался для обозначения определенного набора символов, которые были сопоставлены с определенными битовыми последовательностями или числовыми кодами. Термин «глиф» используется для описания определенного внешнего вида персонажа. Многие компьютерные шрифты состоят из глифов, индексируемых числовым кодом соответствующего символа.
С появлением и широким распространением Unicode [5] и бит-агностические кодированные наборы символов , [ нужны разъяснения ] персонаж все чаще рассматривается как единица информации , независимая от какого-либо конкретного визуального проявления. Международный стандарт ISO /IEC 10646 (Юникод) определяет символ или абстрактный символ как «член набора элементов, используемых для организации, управления или представления данных». Определение Unicode дополняет это пояснительными примечаниями, которые, среди прочего, побуждают читателя различать символы, графемы и глифы. Такая дифференциация является примером более широкой темы разделения представления и содержания .
Например, еврейская буква алеф («א») часто используется математиками для обозначения определенных видов бесконечности (ℵ), но она также используется в обычном тексте на иврите. В Юникоде эти два использования считаются разными символами и имеют два разных числовых идентификатора Юникода (« кодовые точки »), хотя они могут отображаться одинаково. И наоборот, китайская логотипограмма воды («水») может иметь несколько иной вид в японских текстах, чем в китайских текстах, и местные шрифты это могут отражать . Но, тем не менее, в Юникоде они считаются одним и тем же символом и имеют одну и ту же кодовую точку.
Стандарт Unicode также различает эти абстрактные символы и закодированные символы или закодированные символы , которые соединены с числовыми кодами, которые облегчают их представление на компьютерах.
Объединение характера
[ редактировать ]Комбинирующий символ также рассматривается в Юникоде. Например, Unicode присваивает кодовую точку каждому из
- 'и' (U+0069),
- комбинированный диэрезис (U+0308) и
- 'ï' (U+00EF).
Это позволяет кодировать средний символ слова «наивный» либо как одиночный символ «ï», либо как комбинацию символа «i» с объединяющим диэрезисом: (U+0069 ЛАТИНСКАЯ СТРОЧНАЯ БУКВА I + U+0308 СОЧЕТАНИЕ ДИЭРЕЗА); это также отображается как 'ï' .
Они считаются канонически эквивалентными по стандарту Unicode.
голец
[ редактировать ]Символ — в языке программирования C это тип данных размером ровно один байт . [6] [7] который, в свою очередь, определяется как достаточно большой, чтобы содержать любой член «базового набора символов выполнения». Точное количество бит можно проверить с помощью CHAR_BIT
макрос. На сегодняшний день наиболее распространенным размером является 8 бит, и стандарт POSIX требует, чтобы он был 8 бит. [8] В новых стандартах C символ char. требуется UTF-8 для хранения кодовых единиц [6] [7] для которого требуется минимальный размер 8 бит.
Для кодовой точки Unicode может потребоваться до 21 бита. [9] В большинстве систем это не помещается в символ , переменной длины поэтому для некоторых из них используется более одного, как в кодировке UTF-8 , где каждая кодовая точка занимает от 1 до 4 байтов. Более того, для «символа» может потребоваться более одной кодовой точки (например, при объединении символов ), в зависимости от того, что подразумевается под словом «символ».
Тот факт, что символ исторически хранился в одном байте, привел к тому, что в большинстве документации эти два термина («символ» и «символ») использовались как синонимы. Это часто делает документацию запутанной или вводит в заблуждение при использовании многобайтовых кодировок, таких как UTF-8, и приводит к неэффективным и неправильным реализациям функций манипулирования строками (например, вычисление «длины» строки как количества кодовых единиц, а не как числа кодовых единиц). байты). Современная документация POSIX пытается это исправить, определяя «символ» как последовательность одного или нескольких байтов, представляющих один графический символ или управляющий код, и пытается использовать «байт» при ссылке на символьные данные. [10] [11] Однако он по-прежнему содержит ошибки, такие как определение массива символов как массива символов (а не массива байтов ). [12]
Юникод также может храниться в строках, состоящих из кодовых единиц, размер которых превышает char . Это так называемые « широкие символы ». Исходный тип C назывался wchar_t . Поскольку некоторые платформы определяют wchar_t как 16 бит, а другие определяют его как 32 бита, в последних версиях добавлены char16_t , char32_t . переменной длины Даже в этом случае сохраняемые объекты могут не быть символами, например, UTF-16 часто хранится в массивах char16_t .
В других языках также есть тип char . Некоторые, такие как C++, используют как минимум 8 бит, как C. [7] Другие, такие как Java, используют 16 бит для символов для представления значений UTF-16.
См. также
[ редактировать ]- Символьный литерал
- Персонаж (символ)
- Заполнить символ
- Объединение характера
- Персонажи универсального набора символов
- Гомоглиф
Ссылки
[ редактировать ]- ^ «Определение ХАРАКТЕРА» . Мерриам-Вебстер . Проверено 1 апреля 2018 г.
- ^ Дрейфус, Филипп (1958). «Системный проект Гаммы 60». Управление знаниями в области требований, Международный семинар, Лос-Анджелес . Нью-Йорк. стр. 130–133. дои : 10.1109/AFIPS.1958.32 .
[…] Используется внутренний код данных: Количественные (числовые) данные кодируются 4-битным десятичным кодом; качественные (буквенно-цифровые) данные кодируются 6-битным буквенно-цифровым кодом. Внутренний код инструкции означает, что инструкции закодированы в прямом двоичном коде.
Что касается внутренней длины информации, то информационный квант называется « катеной » и состоит из 24 битов, представляющих либо 6 десятичных цифр, либо 4 буквенно-цифровых символа. Этот квант должен содержать разряды, кратные 4 и 6, чтобы представлять целое число десятичных или буквенно-цифровых символов. Двадцать четыре бита оказались хорошим компромиссом между минимальными 12 битами, которые привели бы к слишком низкому потоку передачи из базовой памяти параллельного считывания, и 36 битами или более, что было сочтено слишком большим квантом информации. Катену следует рассматривать как эквивалент символа в машинах с переменной длиной слова , но ее нельзя называть так, поскольку она может содержать несколько символов. Он передается последовательно в основную память и обратно.
Не желая называть «квант» словом, а набор символов буквой (слово — это слово, а квант — это нечто иное), было создано новое слово, и оно получило название «катена». Это английское слово, оно существует в Webster's , хотя его нет во французском языке. Вебстер определяет слово катена как «связная серия»; следовательно, 24-битный информационный элемент. В дальнейшем будет использоваться слово катена.
Таким образом, внутренний код определен. Каковы же коды внешних данных? Они зависят в первую очередь от используемого устройства обработки информации. Gamma 60 предназначен для обработки информации, относящейся к любой двоично-кодированной структуре. Таким образом, перфокарта с 80 столбцами рассматривается как 960-битный элемент информации; 12 строк, умноженные на 80 столбцов, равняются 960 возможным ударам; хранится в виде точного изображения в 960 магнитных сердечниках основной памяти с двумя столбцами карточек, занимающими одну катену. […] - ^ Блаау, Геррит Энн ; Брукс-младший, Фредерик Филлипс ; Бухгольц, Вернер (1962), «4: Естественные единицы данных» (PDF) , в Бухгольце, Вернер (редактор), Планирование компьютерной системы - расширение проекта , McGraw-Hill Book Company, Inc. / The Maple Press Company, Йорк , Пенсильвания, стр. 39–40, LCCN 61-10466 , заархивировано (PDF) из оригинала 03 апреля 2017 г. , получено 03 апреля 2017 г. ,
[…] Термины, используемые здесь для описания структуры, навязанной машиной. design, помимо бита , перечислены ниже.
Байт обозначает группу битов, используемых для кодирования символа, или количество битов, передаваемых параллельно к блокам ввода-вывода и от них. термин, отличный от символа Здесь используется , поскольку данный символ может быть представлен в разных приложениях более чем одним кодом, а разные коды могут использовать разное количество битов (т. е. разные размеры байтов). При передаче ввода-вывода группировка битов может быть совершенно произвольной и не иметь никакого отношения к реальным символам. (Термин произошел от укуса , но был изменен во избежание случайной мутации на бит .)
Слово . состоит из количества битов данных, передаваемых параллельно из или в память за один цикл памяти Таким образом, размер слова определяется как структурное свойство памяти. (Термин катена был придуман для этой цели разработчиками компьютера Bull GAMMA 60 ).
Под блоком понимается количество слов, передаваемых в блок ввода-вывода или из него в ответ на одну команду ввода-вывода. Размер блока — структурное свойство блока ввода-вывода; оно могло быть исправлено в проекте или оставлено для изменения в программе. […] - ^ «Термины и сокращения». Руководство по программированию на языке ассемблера MCS-4 — Руководство по программированию микрокомпьютерной системы INTELLEC 4 (PDF) (предварительное издание). Санта-Клара, Калифорния, США: Корпорация Intel . Декабрь 1973 г. стр. v, 2–6. MCS-030-1273-1. Архивировано (PDF) из оригинала 01 марта 2020 г. Проверено 02 марта 2020 г.
[…] Бит — наименьшая единица информации, которая может быть представлена. (Бит может находиться в одном из двух состояний: 0 или 1). […] Байт — группа из 8 последовательных битов, занимающих одну ячейку памяти. […] Символ — группа из 4 последовательных битов данных. […]
(Примечание. В этом руководстве Intel 4004 используется термин «символ», относящийся к 4-битным, а не 8-битным объектам данных . Intel перешла на использование более распространенного термина «полубайт» для 4-битных объектов в своей документации для последующего процессора 4040 в 1974 год уже.) - ^ Дэвис, Марк (5 мая 2008 г.). «Переход на Юникод 5.1» . Гугл-блог . Проверено 28 сентября 2008 г.
- ^ Перейти обратно: а б «§5.2.4.2.1 Размеры целочисленных типов <limits.h> / §6.2.5 Типы / §6.5.3.4 Операторы sizeof и _Alignof». ISO/IEC 9899:2018 – Информационные технологии. Языки программирования .
{{cite book}}
:|website=
игнорируется ( помогите ) - ^ Перейти обратно: а б с «§1.7 Модель памяти C++ / §5.3.3 Sizeof». ИСО/МЭК 14882:2011 .
- ^ "<limits.h>" . pubs.opengroup.org . Проверено 1 апреля 2018 г.
- ^ «Глоссарий терминов Юникода – кодовая точка» . Проверено 14 мая 2019 г.
- ^ «Определение символа POSIX» .
- ^ «Справочник по POSIX strlen» .
- ^ «Определение символьного массива POSIX» .
Внешние ссылки
[ редактировать ]- Персонажи: краткое введение от Linux Information Project (LINFO)
- ISO/IEC TR 15285:1998 обобщает модель символов ISO/IEC, уделяя особое внимание определениям терминологии и различению символов и глифов.