Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Кодировка [ править ]

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

Терминология [ править ]

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

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

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

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

Комбинированный персонаж [ править ]

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

  • 'я' (U + 0069),
  • объединяющий диэрезис (U + 0308), и
  • «ï» (U + 00EF).

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

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

char [ править ]

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

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

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

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

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

См. Также [ править ]

  • Символьный литерал
  • Персонаж (символ)
  • Заполнить символ
  • Комбинирующий характер
  • Персонажи универсального набора символов
  • Гомоглиф

Ссылки [ править ]

  1. ^ «Определение ХАРАКТЕРА» . www.merriam-webster.com . Проверено 1 апреля 2018 .
  2. ^ Дрейфус, Филипп (1958). «Системное проектирование Гамма 60». Управление знаниями требований, Международный семинар, Лос-Анджелес . Нью-Йорк. С. 130–133. DOI : 10,1109 / AFIPS.1958.32 . […] Используется внутренний код данных: количественные (числовые) данные кодируются в 4-битном десятичном коде; качественные (буквенно-цифровые) данные кодируются в 6-битном буквенно-цифровом коде. Внутренний код инструкции означает, что инструкции закодированы в прямом двоичном коде. Что касается длины внутренней информации, то квант информации называется " катеной".
    , "и состоит из 24 битов, представляющих либо 6 десятичных цифр, либо 4 буквенно-цифровых символа. Этот квант должен содержать число, кратное 4 и 6 битам, чтобы представлять целое число десятичных или буквенно-цифровых символов. Было обнаружено, что 24 бита представляют собой хороший компромисс между минимальными 12 битами, которые привели бы к слишком низкому потоку передачи из параллельного считывающего ядра памяти, и 36 битами или более, которые были сочтены слишком большим информационным квантом. Катена должна рассматриваться как эквивалент символа в машинах с переменной длиной слова , но его нельзя так называть, так как он может содержать несколько символов.Он передается последовательно в и из основной памяти.
    Не желая называть «квант» словом или набор символов буквой (слово - это слово, а квант - это что-то еще), было создано новое слово, которое было названо «катена». Это английское слово, которое существует в Webster's, хотя его нет во французском языке. Вебстер определяет слово «катена» как «связный ряд»; следовательно, 24-битный информационный элемент. Слово катена будет использоваться в дальнейшем.
    Таким образом, внутренний код был определен. Каковы же коды внешних данных? Они зависят в первую очередь от задействованного устройства обработки информации. Гамма - 60  [ FR ]предназначен для обработки информации, относящейся к любой структуре с двоичным кодом. Таким образом, перфокарта с 80 столбцами считается 960-битным информационным элементом; 12 строк, умноженных на 80 столбцов, равняются 960 возможным ударам; хранится в виде точного изображения в 960 магнитных сердечниках основной памяти с двумя столбцами карты, занимающими одну катену. […]
  3. ^ Blaauw, Геррит Энн ; Брукс-младший, Фредерик Филлипс ; Бухгольц, Вернер (1962), «4: Единицы естественных данных» (PDF) , в Бухгольце, Вернер (ред.), Планирование компьютерной системы - Project Stretch , McGraw-Hill Book Company, Inc. / The Maple Press Company, Йорк , PA., Pp. 39–40, LCCN 61-10466 , заархивировано (PDF) из оригинала 03.04.2017 , извлечено 03.04.2017 , […] Термины, используемые здесь для описания структуры, навязанной машиной конструкции, в дополнение к битам , перечислены ниже. Байт  
    обозначает группу битов, используемых для кодирования символа, или количество битов, передаваемых параллельно в блоки ввода-вывода и из них. Здесь используется термин, отличный от символа , потому что данный символ может быть представлен в разных приложениях более чем одним кодом, а разные коды могут использовать разное количество битов (т. Е. Разные размеры байтов). При передаче ввода-вывода группировка битов может быть совершенно произвольной и не иметь отношения к реальным символам. (Термин придуман от укуса , но respelled , чтобы избежать случайной мутации к биту .) Слово состоит из числа бит данных , передаваемых параллельно от или к памяти в одном цикле памяти. Размер слова
    таким образом определяется как структурное свойство памяти. (Термин « катена» был придуман для этой цели разработчиками компьютера Bull GAMMA 60  [ fr ] .)
    Блок относится к количеству слов, переданных в или из устройства ввода-вывода в ответ на одну команду ввода-вывода. Размер блока - это структурное свойство устройства ввода-вывода; это могло быть исправлено разработкой или оставлено для изменения программой. […]
  4. ^ «Термины и сокращения». Руководство по программированию на языке ассемблера MCS-4 - Руководство по программированию микрокомпьютерной системы INTELLEC 4 (PDF) (предварительная редакция). Санта-Клара, Калифорния, США: Intel Corporation . Декабрь 1973 г., стр. V, 2–6. MCS-030-1273-1. Архивировано (PDF) из оригинала 2020-03-01 . Проверено 2 марта 2020 . […] Бит - наименьшая единица информации, которая может быть представлена. (Бит может находиться в одном из двух состояний I 0 или 1). […] Байт - группа из 8 смежных битов, занимающих одну ячейку памяти. […] Символ - группа из 4 смежных битов данных. […] (NB. В этом руководстве Intel 4004 используется термин символ, относящийся к 4-битным, а не 8-битным объектам данных . Intel уже в 1974 году перешла на использование более общего термина nibble для 4-битных объектов в своей документации для следующего процессора 4040 . )
  5. ^ Дэвис, Марк (2008-05-05). «Переход на Unicode 5.1» . Блог Google . Проверено 28 сентября 2008 .
  6. ^ a b "§1.7 Модель памяти C ++ / §5.3.3 Sizeof". ИСО / МЭК 14882: 2011 .
  7. ^ "<limits.h>" . pubs.opengroup.org . Проверено 1 апреля 2018 .
  8. ^ «Глоссарий терминов Unicode - Code Point» . Проверено 14 мая 2019 .
  9. ^ "Определение символа POSIX" .
  10. ^ "Ссылка на POSIX strlen" .
  11. ^ "Определение массива символов в POSIX" .

Ошибка цитирования: указанная в списке ссылка с именем "Goyvaerts_Classes" не используется в контенте (см. Страницу справки ).

Внешние ссылки [ править ]

  • Персонажи: краткое введение от Linux Information Project (LINFO)
  • ISO / IEC TR 15285: 1998 резюмирует модель символов ISO / IEC, уделяя особое внимание определениям терминологии и различению символов и глифов.