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 присваивает кодовую точку каждому из

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

Они считаются канонически эквивалентными по стандарту Unicode.

голец

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

Для кодовой точки 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. ^ «Определение ХАРАКТЕРА». Мерриам-Вебстер . Проверено 1 апреля 2018 г.
  2. ^ Дрейфус, Филипп (1958). «Системный проект Гаммы 60». Управление знаниями в области требований, Международный семинар, Лос-Анджелес . Нью-Йорк. стр. 130–133. дои : 10.1109/AFIPS.1958.32. […] Используется внутренний код данных: Количественные (числовые) данные кодируются 4-битным десятичным кодом; качественные (буквенно-цифровые) данные кодируются 6-битным буквенно-цифровым кодом. Внутренний код инструкции означает, что инструкции закодированы в прямом двоичном коде. Что касается внутренней длины информации, то информационный квант называется « катеной » и состоит из 24 битов, представляющих либо 6 десятичных цифр, либо 4 буквенно-цифровых символа. Этот квант должен содержать разряды, кратные 4 и 6, чтобы представлять целое число десятичных или буквенно-цифровых символов. Было обнаружено, что двадцать четыре бита являются хорошим компромиссом между минимальными 12 битами, которые привели бы к слишком низкому потоку передачи из основной памяти параллельного считывания, и 36 битами или более, что было сочтено слишком большим квантом информации. Катену следует рассматривать как эквивалент символа в машинах с переменной длиной слова , но ее нельзя называть так, поскольку она может содержать несколько символов. Он передается последовательно в основную память и из нее. Не желая называть «квант» словом, а набор символов буквой (слово — это слово, а квант — это нечто иное), было создано новое слово, и оно получило название «катена». Это английское слово, оно существует в Webster's , хотя его нет во французском языке. Вебстер определяет слово катена как «связная серия»; следовательно, 24-битный информационный элемент. В дальнейшем будет использоваться слово катена. Таким образом, внутренний код определен. Каковы же коды внешних данных? Они зависят в первую очередь от используемого устройства обработки информации. Gamma 60  [fr] предназначен для обработки информации, относящейся к любой двоично-кодированной структуре. Таким образом, перфокарта с 80 столбцами рассматривается как 960-битный элемент информации; 12 строк, умноженные на 80 столбцов, равняются 960 возможным ударам; хранится в виде точного изображения в 960 магнитных сердечниках основной памяти с двумя карточными столбцами, занимающими одну катену. […]


  3. ^ Блаау, Геррит Энн ; Брукс-младший, Фредерик Филлипс ; Бухгольц, Вернер (1962), «4: Естественные единицы данных» (PDF) , в Бухгольце, Вернер (редактор), Планирование компьютерной системы - расширение проекта , McGraw-Hill Book Company, Inc. / The Maple Press Company, Йорк , Пенсильвания, стр. 39–40, LCCN  61-10466, заархивировано (PDF) из оригинала 03 апреля 2017 г. , получено 3 апреля 2017 г. , […] Термины, используемые здесь для описания структуры, навязанной машиной. design, помимо бита , перечислены ниже. Байт обозначает группу битов, используемых для кодирования символа, или количество битов, передаваемых параллельно к блокам ввода-вывода и от них. Здесь используется термин, отличный от символа , поскольку данный символ может быть представлен в разных приложениях более чем одним кодом, а разные коды могут использовать разное количество битов (т. е. разные размеры байтов). При передаче ввода-вывода группировка битов может быть совершенно произвольной и не иметь никакого отношения к реальным символам. (Термин произошел от укуса , но был изменен во избежание случайной мутации на бит .) Слово состоит из количества битов данных, передаваемых параллельно из или в память за один цикл памяти . Таким образом, размер слова определяется как структурное свойство памяти. (Термин катена был придуман для этой цели разработчиками компьютера Bull GAMMA 60  [fr] .) Блок относится к количеству слов, передаваемых в или из устройства ввода-вывода в ответ на одну команду ввода-вывода. Размер блока — структурное свойство блока ввода-вывода; оно могло быть исправлено в проекте или оставлено для изменения в программе. […]


  4. ^ «Термины и сокращения». Руководство по программированию на языке ассемблера 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. ^ Дэвис, Марк (5 мая 2008 г.). «Переход на Юникод 5.1». Гугл-блог . Проверено 28 сентября 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». ИСО/МЭК 14882:2011.
  8. ^ "<limits.h>". pubs.opengroup.org . Проверено 1 апреля 2018 г.
  9. ^ «Глоссарий терминов Unicode – Кодовая точка» . Проверено 14 мая 2019 г.
  10. ^ «Определение символа в POSIX» .
  11. ^ "Справочник по POSIX strlen" .
  12. ^ «Определение символьного массива POSIX» .

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