Правила представления символов

Главная / Правила представления символов

Представление информации и единицы измерения информации

Курс дистанционного обучения:
«Экономическая информатика»
Модуль 1 (1,5 кредит): Введение в экономическую информатику

Тема 1.1: Теоретические основы экономической информатики

Тема 1.2: Технические средства обработки информации

Тема 1.3: Системное программное обеспечение

Тема 1.4: Сервисное программное обеспечение и основы алгоритмизации

1.2. Технические средства обработки информации

1.2.5. Представление информации в компьютере, единицы измерения информации

В ЭВМ применяется двоичная система счисления, т.е. все числа в компьютере представляются с помощью нулей и единиц, поэтому компьютер может обрабатывать только информацию, представленную в цифровой форме.

Для преобразования числовой, текстовой, графической, звуковой информации в цифровую необходимо применить кодирование. Кодирование – это преобразование данных одного типа через данные другого типа. В ЭВМ применяется система двоичного кодирования, основанная на представлении данных последовательностью двух знаков: 1 и 0, которые называются двоичными цифрами (binary digit – сокращенно bit).

Таким образом, единицей информации в компьютере является один бит, т.е. двоичный разряд, который может принимать значение 0 или 1. Восемь последовательных бит составляют байт. В одном байте можно закодировать значение одного символа из 256 возможных (256 = 2 в степени 8). Более крупной единицей информации является килобайт (Кбайт), равный 1024 байтам (1024 = 2 в степени 10). Еще более крупные единицы измерения данных: мегабайт, гигабайт, терабайт (1 Мбайт = 1024 Кбайт; 1 Гбайт = 1024 Мбайт; 1 Тбайт = 1024 Гбайт).

Целые числа кодируются двоичным кодом довольно просто (путем деления числа на два). Для кодирования нечисловой информации используется следующий алгоритм: все возможные значения кодируемой информации нумеруются и эти номера кодируются с помощью двоичного кода.

Например, для представления текстовой информации используется таблица нумерации символов или таблица кодировки символов, в которой каждому символу соответствует целое число (порядковый номер). Восемь двоичных разрядов могут закодировать 256 различных символов.

Существующий стандарт ASCII (8 – разрядная система кодирования) содержит две таблицы кодирования – базовую и расширенную. Первая таблица содержит 128 основных символов, в ней размещены коды символов английского алфавита, а во второй таблице кодирования содержатся 128 расширенных символов.

Так как в этот стандарт не входят символы национальных алфавитов других стран, то в каждой стране 128 кодов расширенных символов заменяются символами национального алфавита. В настоящее время существует множество таблиц кодировки символов, в которых 128 кодов расширенных символов заменены символами национального алфавита.

Так, например, кодировка символов русского языка Widows – 1251 используется для компьютеров, которые работают под ОС Windows. Другая кодировка для русского языка – это КОИ – 8, которая также широко используется в компьютерных сетях и российском секторе Интернет.

Но использование различных кодовых страниц для национальных алфавитов (применение 8 – разрядной системы кодирования) создает проблемы для обмена файлами между разными узлами сети Интернет. С целью устранения недостатков стандарта ASCII, организация Unicode внедрила новый стандарт универсальной системы UNICODE, основанный на 16 – разрядном кодировании символов.

В первой версии Юникода была представлена кодировка с фиксированным размером символа в 16 бит (два байта). Эта 16 – разрядная система обеспечивает универсальные коды для 65536 различных символов, т.е. в этой таблице могут разместиться символы языков большинства стран мира.

Но внедрение фиксированной 16 – разрядной системы кодирования символов (UTF-16) привела бы к увеличению объема текстовых файлов в два раза. В настоящее время Юникод имеет несколько форм представления: UTF-8, UTF-16 и UTF-32. UTF-32 использует для кодирования любого символа 32 бита, а UTF-8 и UTF-16 используют для представления символов переменное число байтов.

Фактически сейчас применяется кодировка UTF-8, которая обеспечивает совместимость с системой ASCII, использующей 8-битные символы. Символы ASCII занимают один байт в UTF-8 и используют те же биты. Остальные символы Юникода, которые не относятся к символам ASCII, кодируются переменным числом байтов от двух до четырех.

Для кодирования графических данных применяется, например, такой метод кодирования как растр. Координаты точек и их свойства описываются с помощью целых чисел, которые кодируются с помощью двоичного кода. Так черно-белые графические объекты могут быть описаны комбинацией точек с 256 градациями серого цвета, т.е. для кодирования яркости любой точки достаточно 8 — разрядного двоичного числа.

Режим представления цветной графики в системе RGB с использованием 24 разрядов (по 8 разрядов для каждого из трех основных цветов) называется полноцветным. Для поноцветного режима в системе CMYK необходимо иметь 32 разряда (четыре цвета по 8 разрядов).

© Обучение в интернет, . Обратная связь

www.lessons-tva.info

Правила представления символов

Формула — это комбинация математических или химических знаков, выражающих какое-либо предложение.

Формулы обычно располагают отдельными строками посередине листа и внутри текстовых строк в подбор. Для экономии места несколько коротких однотипных формул, выделенных из текста, можно помещать на одной строке, а не одну под другой. Небольшие и несложные формулы, не имеющие самостоятельного значения, размещают внутри строк текста.

Нумерация формул также требует знания некоторых особенностей ее оформления. Нумеровать следует наиболее важные формулы, на которые имеются ссылки в последующем тексте.

Порядковые номера формул обозначают арабскими цифрами в круглых скобках у правого края страницы без отточия от формулы к ее номеру. Место номера, не умещающегося в строке формулы, располагают в следующей строке ниже формулы. Нумерация небольших формул, составляющих единую группу, делается на одной строке и объединяется одним номером.

Формулы — разновидности приведенной ранее основной формулы допускается нумеровать арабской цифрой и прямой строчной буквой русского алфавита, которая пишется слитно с цифрой. Например: (14а), (14б).

Сквозная нумерация формул применяется в небольших работах, где нумеруется ограниченное число наиболее важных формул. Такую же нумерацию можно использовать и в более объемных работах, если пронумерованных формул не слишком много и в одних главах содержится мало ссылок на формулы из других глав.

Рассмотрим теперь оформление ссылок на номера формул в тексте. При ссылках на какую-либо формулу ее номер ставят точно в той же графической форме, что и после формулы, т. е. арабскими цифрами в круглых скобках. Например: в формуле (3.7); из уравнения (5.1) вытекает.

Следует знать и правила пунктуации в тексте с формулами. Общее правило здесь таково: формула включается в предложение как его равноправный элемент. Поэтому в конце формул и в тексте перед ними знаки препинания ставят в соответствии с правилами пунктуации.

Символ — это условное обозначение, во-первых, математических и физических величин, во-вторых, единиц измерения величин и, в-третьих, математических знаков.

При использовании символов и индексов необходимо соблюдать следующие требования:

  • Одна и та же величина в тексте всей диссертации должна быть обозначена одинаково;
  • Символы и индексы физических величин и их единиц измерения должны соответствовать СТ СЭВ 1052-78;
  • Буквенные индексы должны соответствовать начальным или наиболее характерным буквам наименования понятия или величины, на связь с которыми указывает индекс (например: Кр — константа равновесия);
  • Индекс 0 (ноль) необходимо использовать только в случаях, указывающих на начальные или исходные показатели. Экспликация — это объяснение символов, входящих в формулу. Экспликация должна отвечать следующим требованиям:
  • Размещаться только после формулы, от которой отделяется запятой;
  • Начинаться со слова «где»;
  • Символы надо располагать в порядке упоминания в формуле. В формулах с дробями сначала поясняют числитель, а затем — знаменатель;
  • Должна включать все символы из формулы или группы формул, после которых экспликация расположена. Знаки препинания расставляются в экспликации следующим образом:
  • Между символом в расшифровке ставят тире;
  • Внутри расшифровки единицы измерений отделяют от текста запятой;
  • После расшифровки перед следующим символом ставят точку с запятой;
  • В конце последней расшифровки ставят точку, например:

    uznaikak.su

    Кодирование символов. Unicode

    Любые числа (в определенных пределах) в памяти компьютера кодируются числами двоичной системы счисления. Для этого существуют простые и понятные правила перевода. Однако на сегодняшний день компьютер используется куда шире, чем в роли исполнителя трудоемких вычислений. Например, в памяти ЭВМ хранятся текстовая и мультимедийная информация. Поэтому возникает первый вопрос:

    Как в памяти компьютера хранятся символы (буквы)?

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

    Соответствие букв определенного алфавита с числами-кодами формирует так называемую таблицу кодирования. Другими словами, каждый символ конкретного алфавита имеет свой числовой код в соответствии с определенной таблицей кодирования.

    Однако алфавитов в мире очень много (английский, русский, китайский и др.). Поэтому следующий вопрос:

    Как закодировать все используемые на компьютере алфавиты?

    Для ответа на этот вопрос пойдем историческим путем.

    В 60-х годах XX века в американском национальном институте стандартизации (ANSI) была разработана таблица кодирования символов, которая впоследствии была использована во всех операционных системах. Эта таблица называется ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией). Чуть позже появилась расширенная версия ASCII.

    В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 ячеек может принять 2 8 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.

    Поскольку национальных алфавитов огромное множество, то расширенные ASCII-таблицы существуют во множестве вариантов. Даже для русского языка существуют несколько таблиц кодирования (распространены Windows-1251 и Koi8-r). Все это создает дополнительные трудности. Например, мы отправляем письмо, написанное в одной кодировке, а получатель пытается прочитать ее в другой. В результате видит кракозябры. Поэтому читающему требуется применить для текста другую таблицу кодирования.

    Есть и другая проблема. В алфавитах некоторых языков слишком много символов и они не помещаются в отведенные им позиции с 128 до 255 однобайтовой кодировки.

    Третья проблема — что делать, если в тексте используется несколько языков (например, русский, английский и французский)? Нельзя же использовать две таблицы сразу …

    Чтобы решить эти проблемы одним разом была разработана кодировка Unicode.

    Стандарт кодирования символов Unicode

    Для решения вышеизложенных проблем в начале 90-х был разработан стандарт кодирования символов, получивший название Unicode. Данный стандарт позволяет использовать в тексте почти любые языки и символы.

    В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает запредельное число: 2 31 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, даже «мертвых» и выдуманных, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (2 16 = 65 536 значений), где кодируются все современные алфавиты.

    В Unicode первые 128 кодов совпадают с таблицей ASCII.

    inf1.info

    Цифровое представление символов

    Правило цифрового представления символов следующее: каждому символу ставится в соответствие некоторое целое число, то есть каждый символ нумеруется.

    Рассмотрим последовательность строчных букв русского алфавита: а, б, в, г, д, е, ё, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, э, ю, я. Присвоив каждой букве номер от 0 до 33, получим простейший способ представления символов. Последнее число — 32 в двоичной форме имеет вид 100000, то есть для хранения символа в памяти понадобится 6 бит. Так как с помощью шести бит можно представить число 2 6 – 1 = 63, то шести бит будет достаточно для представления 64 букв.

    Имеются разные стандарты для представления символов, которые отличаются лишь порядком нумерации символов. Наиболее распространён американский стандартный код для информационного обмена — ASCII[AmericanStandardCodeforInformationInterchange] введён в США в 1963г. В 1977 году в несколько модифицированном виде он был принят в качестве всемирного стандарта Международной организации стандартов [InternationalStandardsOrganization-ISO] под названием ISO-646. Согласно этому стандарту каждому символу поставлено в соответствие число от 0 до 255. Символы от 0 до 127 – латинские буквы, цифры и знаки препинания – составляют постоянную часть таблицы. Остальные символы используются для представления национальных алфавитов. Конкретный состав этих символов определяетсякодовой страницей. В русской версии ОСWindows95 используется кодовая страница 866. В ОСLinuxдля представления русских букв более употребительна кодировка КОИ-8.

    Недостатки такого способа кодировки национального алфавита очевидны. Во-первых, невозможно одновременное представление русских и, например, французских букв. Во-вторых, такая кодировка совершенно непригодна для представления китайских или японских иероглифов. В 1991 году была создана некоммерческая организация Unicode, в которую входят представители ряда фирм (Borland,IBM,Lotus,Microsoft,Novell,Sun,WordPerfectи др.), и которая занимается развитием и внедрением нового стандарта. КодировкаUnicodeиспользует 16 разрядов и может содержать 65536 символов. Это символы большинства народов мира, элементы иероглифов, спецсимволы, 5000 мест для частного использования, резерв из 30000 мест.

    Unicode-код символаC= 6710= 00000000011001112.

    Цифровое представление вещественных чисел

    Для того, чтобы представить вещественное число в виде набора целых чисел, его необходимо привести к нормализованной форме:

    где M— называетсямантиссой(дробной частью), аPэкспонентой(порядком).

    После этого мантисса и порядок переводятся в двоичное представление. В памяти ЭВМ вещественное число хранится в виде:

    здесь S– признак знака. Поэтому необходимо также определить, какой размер памяти будет отведён под все три части нормализованного числа.

    Далее должны быть определены правила (алгоритмы), по которым будут выполняться арифметические операции с нормализованными вещественными числами. Совокупность таких алгоритмов, а также правил представления чисел в нормализованной форме называется арифметикой плавающих чисел[floatingpointnumber].

    Поскольку размер памяти, отводимый под мантиссу и порядок, ограничен, то вещественные числа представляются с некоторой погрешностью (точность десятичных цифр) и имеют ограниченный диапазон изменения. Чем больше размер памяти для плавающего числа, тем точнее можно представить вещественное число. Поэтому для пользователя основными характеристиками арифметики плавающего числа являются длина числа (размер), измеряемая в битах, и точность представления числа. По точности представления вещественных чисел различают плавающие числа одинарной и двойной точности[singleanddoubleprecision].

    Рассмотрим принцип цифрового представления вещественного числа 15,375. Пусть под мантиссу отведено 5 десятичных разрядов, а под порядок – 2 разряда. Представим число в нормализованной форме: 15,375 1,9219*2 3 . Так как в нормализованной форме первая цифра всегда равна единице, то её можно не хранить. Тогда число будет представлено в виде целого числа 9219003 с относительной погрешностью не более 10 -4 , то есть число верных десятичных чисел равно 4. В памяти ЭВМ это число будет храниться в двоичной форме, причём можно легко подсчитать, что для хранения такого числа потребуется 27 бит. Максимальное число, которое можно представить таким образом — 9999999=1,99999*10 99 , а минимальное, не равное нулю — 0000100=0,00001. Если предусмотреть один бит для хранения знака порядка, то минимально представляемое число будет равно 00001-99, то есть 0,00001*10 -99 .

    При попытке выйти за допустимый диапазон ЭВМ выдаст сообщение о переполнении (underflowилиoverflow).

    Конкретные характеристики арифметики различны для разных стандартов. Для ПЭВМ наиболее распространённым является IEEE-стандарт (IEEE-754-1985) [InstituteofElectricalandElectronicEngineers], согласно которому вещественные числа представляются в трёх основных формах (см. табл. 1.2).

    Таблица 1.2 Данные с плавающей точкой поIEEE-стандарту

    studfiles.net

    Представление символов, таблицы кодировок

    В вычислительных машинах символы не могут храниться иначе, как в виде последовательностей бит (как и числа). Для передачи символа и его корректного отображения ему должна соответствовать уникальная последовательность нулей и единиц. Для этого были разработаны таблицы кодировок.

    Количество символов, которые можно задать последовательностью бит длины [math]n[/math] , задается простой формулой [math]C(n) = 2^n[/math] . Таким образом, от нужного количества символов напрямую зависит количество используемой памяти.

    На заре компьютерной эры на каждый символ было отведено по пять бит. Это было связано с малым количеством оперативной памяти на компьютерах тех лет. В эти [math]64[/math] символа входили только управляющие символы и строчные буквы английского алфавита.

    С ростом производительности компьютеров стали появляться таблицы кодировок с большим количеством символов. Первой семибитной кодировкой стала ASCII7. В нее уже вошли прописные буквы английского алфавита, арабские цифры, знаки препинания. Затем на ее базе была разработана ASCII8, в которым уже стало возможным хранение [math]256[/math] символов: [math]128[/math] основных и еще столько же расширенных. Первая часть таблицы осталась без изменений, а вторая может иметь различные варианты (каждый имеет свой номер). Эта часть таблицы стала заполняться символами национальных алфавитов.

    Но для многих языков (например, арабского, японского, китайского) [math]256[/math] символов недостаточно, поэтому развитие кодировок продолжалось, что привело к появлению UNICODE.

    • ASCII7 — первая кодировка, пригодная для работы с текстом. Помимо маленьких букв английского алфавита и служебных символов, содержит большие буквы английского языка, цифры, знаки препинания и другие символы.
    • Кодировки стандарта ASCII ( [math]8[/math] бит):

    • ASCII — первая кодировка, в которой стало возможно использовать символы национальных алфавитов.
    • КОИ8-R — первая русская кодировка. Символы кириллицы расположены не в алфавитном порядке. Их разместили в верхнюю половину таблицы так, чтобы позиции кириллических символов соответствовали их фонетическим аналогам в английском алфавите. Это значит, что даже при потере старшего бита каждого символа, например, при проходе через устаревший семибитный модем, текст остается «читаемым».
    • CP866 — русская кодировка, использовавшаяся на компьютерах IBM в системе DOS.
    • Windows-1251 — русская кодировка, использовавшаяся в русскоязычных версиях операционной системы Windows в начале 90-х годов. Кириллические символы идут в алфавитном порядке. Содержит все символы, встречающиеся в типографике обычного текста (кроме знака ударения).

    Структурные свойства таблицы [ править ]

    • Цифры 0-9 представляются своими двоичными значениями (например, [math]5=0101_2[/math] ), перед которыми стоит [math]0011_2[/math] . Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева [math]0011_2[/math] к каждому двоично-десятичному полубайту.
    • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит [math]0100_2[/math] (для букв верхнего регистра) или [math]0110_2[/math] (для букв нижнего регистра).
    • Юникод или Уникод (англ. Unicode) — это промышленный стандарт обеспечивающий цифровое представление символов всех письменностей мира, и специальных символов.

      Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей. Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа.Семейство кодировок определяет машинное представление последовательности кодов UCS.

      Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F. Часть кодов зарезервирована для использования в будущем.

      Кодовое пространство [ править ]

      Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до [math]2^<31>[/math] [math](2\ 147\ 483\ 648)[/math] кодовых позиций, было принято решение использовать лишь [math]1\ 112\ 064[/math] для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее [math]110\ 000[/math] кодовых позиций ( [math]109\ 242[/math] графических и [math]273[/math] прочих символов).

      Кодовое пространство разбито на [math]17[/math] плоскостей (англ. planes) по [math]2^<16>[/math] [math](65\ 536)[/math] символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая — для для редко используемых иероглифов китайского письма, третья зарезервирована для архаичных китайских иероглифов. Плоскости [math]15[/math] и [math]16[/math] выделены для частного употребления.

      Для обозначения символов Unicode используется запись вида «U+xxxx» (для кодов [math]0000_<16>..FFFF_<16>[/math] ) или «U+xxxxx» (для кодов [math]10000_<16>..FFFFF_<16>[/math] ) или «U+xxxxxx» (для кодов [math]100000_<16>..10FFFF_<16>[/math] ), где xxx — шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код [math]044F_ <16>= 1103_<10>[/math] .

      Модифицирующие символы [ править ]

      Графические символы в Юникоде делятся на протяжённые и непротяжённые. Непротяжённые символы при отображении не занимают дополнительного места в строке. К примеру, к ним относятся знак ударения. Протяжённые и непротяжённые символы имеют собственные коды, но последние не могут встречаться самостоятельно. Протяжённые символы называются базовыми (англ. base characters), а непротяженные — модифицирующими (англ. combining characters). Например символ «Й» (U+0419) может быть представлен в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306).

      Способы представления [ править ]

      Юникод имеет несколько форм представления (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт.

      UTF-8 [ править ]

      UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими [math]8[/math] -битные символы. Текст, состоящий только из символов с номером меньше [math]128[/math] , при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше [math]128[/math] изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от двух до шести байт (на деле, только до четырех байт, поскольку в Юникоде нет символов с кодом больше [math]10FFFF_<16>[/math] , и вводить их в будущем не планируется), в которых первый байт всегда имеет вид [math]11xxxxxx[/math] , а остальные — [math]10xxxxxx[/math] .

      Символы UTF-8 получаются из Unicode cледующим образом:

      Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы, называемые overlong sequence, отвергаются по соображениям безопасности.

      Принцип кодирования [ править ]

      Правила записи кода одного символа в UTF-8 [ править ]

      1. Если размер символа в кодировке UTF-8 = [math]1[/math] байт

      Код имеет вид (0aaa aaaa), где «0» — просто ноль, остальные биты «a» — это код символа в кодировке ASCII;

      2. Если размер символа в кодировке в UTF-8 [math]\gt 1[/math] байт (то есть от [math]2[/math] до [math]6[/math] ):

      2.1 Первый байт содержит количество байт символа, закодированное в единичной системе счисления; 2.2 «0» — бит терминатор, означающий завершение кода размера 2.3 далее идут значащие байты кода, которые имеют вид (10xx xxxx), где «10» — биты признака продолжения, а «x» — значащие биты.

      В общем случае варианты представления одного символа в кодировке UTF-8 выглядят так:

      Определение длины кода в UTF-8 [ править ]

      В общем случае количество значащих бит [math]C[/math] , кодируемых [math]n[/math] байтами UTF-8, определяется по формуле:

      [math]C = 7[/math] при [math]n=1[/math]

      [math]C = n\cdot5+1[/math] при [math]n\gt 1[/math]

      UTF-16 [ править ]

      UTF-16 — один из способов кодирования символов (англ. code point) из Unicode в виде последовательности [math]16[/math] -битных слов (англ. code unit). Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (общим количеством [math]1\ 112\ 064[/math] ), причем [math]4[/math] -байтные символы представляются как есть, а более длинные — с помощью суррогатных пар (англ. surrogate pair), для которых и вырезан диапазон [math]D800_<16>..DFFF_<16>[/math] .

      В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от [math]0000_<16>[/math] до [math]FFFF_<16>[/math] ). При этом можно кодировать символы Unicode в дипазонах [math]0000_<16>..D7FF_<16>[/math] и [math]E000_<16>..10FFFF_<16>[/math] . Исключенный отсюда диапазон [math]D800_<16>..DFFF_<16>[/math] используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя [math]16[/math] -битными словами. Символы Unicode до [math]FFFF_<16>[/math] включительно (исключая диапазон для суррогатов) записываются как есть [math]16[/math] -битным словом. Символы же в диапазоне [math]10000_<16>..10FFFF_<16>[/math] (больше [math]16[/math] бит) уже кодируются парой [math]16[/math] -битных слов. Для этого их код арифметически сдвигается до нуля (из него вычитается минимальное число [math]10000_<16>[/math] ). В результате получится значение от нуля до [math]FFFF_<16>[/math] , которое занимает до [math]20[/math] бит. Старшие [math]10[/math] бит этого значения идут в лидирующее (первое) слово, а младшие [math]10[/math] бит — в последующее (второе). При этом в обоих словах старшие [math]6[/math] бит используются для обозначения суррогата. Биты с [math]11[/math] по [math]15[/math] имеют значения [math]11011_2[/math] , а [math]10[/math] -й бит содержит [math]0[/math] у лидирующего слова и [math]1[/math] — у последующего. В связи с этим можно легко определить к чему относится каждое слово.

      UTF-16LE и UTF-16BE [ править ]

      Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт. Который из двух идёт впереди, старший или младший, зависит от порядка байт. Подробнее об этом будет сказано ниже.

      UTF-32 [ править ]

      UTF-32 — один из способов кодирования символов из Юникод, использующий для кодирования любого символа ровно [math]32[/math] бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байт. Символ UTF-32 является прямым представлением его кодовой позиции (англ. code point).

      Главное преимущество UTF-32 перед кодировками переменной длины заключается в том, что символы Юникод непосредственно индексируемы. Получение [math]n[/math] -ой кодовой позиции является операцией, занимающей одинаковое время. Напротив, коды с переменной длиной требует последовательного доступа к [math]n[/math] -ой кодовой позиции. Это делает замену символов в строках UTF-32 простой, для этого используется целое число в качестве индекса, как обычно делается для строк ASCII.

      Главный недостаток UTF-32 — это неэффективное использование пространства, так как для хранения символа используется четыре байта. Символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства редко используются в большинстве текстов. Поэтому удвоение, в сравнении с UTF-16, занимаемого строками в UTF-32 пространства не оправдано.

      Хотя использование неменяющегося числа байт на символ удобно, но не настолько, как кажется. Операция усечения строк реализуется легче в сравнении с UTF-8 и UTF-16. Но это не делает более быстрым нахождение конкретного смещения в строке, так как смещение может вычисляться и для кодировок фиксированного размера. Это не облегчает вычисление отображаемой ширины строки, за исключением ограниченного числа случаев, так как даже символ «фиксированной ширины» может быть получен комбинированием обычного символа с модифицирующим, который не имеет ширины. Например, буква «й» может быть получена из буквы «и» и диакритического знака «крючок над буквой». Сочетание таких знаков означает, что текстовые редакторы не могут рассматривать [math]32[/math] -битный код как единицу редактирования. Редакторы, которые ограничиваются работой с языками с письмом слева направо и составными символами (англ. Precomposed character), могут использовать символы фиксированного размера. Но такие редакторы вряд ли поддержат символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства и вряд ли смогут работать одинаково хорошо с символами UTF-16.

      Порядок байт [ править ]

      В современной вычислительной технике и цифровых системах связи информация обычно представлена в виде последовательности байт. В том случае, если число не может быть представлено одним байтом, имеет значение в каком порядке байты записываются в памяти компьютера или передаются по линиям связи. Часто выбор порядка записи байт произволен и определяется только соглашениями.

      В общем случае, для представления числа [math]M[/math] , большего [math]255[/math] (здесь [math]255=2^8-1[/math] — максимальное целое число, записываемое одним байтом), приходится использовать несколько байт. При этом число [math]M[/math] записывается в позиционной системе счисления по основанию [math]256[/math] :

      [math]M = \sum_^A_i\cdot 256^i=A_0\cdot 256^0+A_1\cdot 256^1+A_2\cdot 256^2+\dots+A_n\cdot 256^n.[/math]

      Набор целых чисел [math]A_0,\dots,A_n[/math] , каждое из которых лежит в интервале от [math]0[/math] до [math]255[/math] , является последовательностью байт, составляющих [math]M[/math] . При этом [math]A_0[/math] называется младшим байтом, а [math]A_n[/math] — старшим байтом числа [math]M[/math] .

      Варианты записи [ править ]

      Порядок от старшего к младшему [ править ]

      Порядок от старшего к младшему (англ. big-endian): [math]A_n,\dots,A_0[/math] , запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байт от старшего к младшему часто называют сетевым порядком байт (англ. network byte order). Этот порядок байт используется процессорами IBM 360/370/390, Motorola 68000, SPARC (отсюда третье название — порядок байт Motorola, Motorola byte order).

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

      Порядок байт от старшего к младшему применяется во многих форматах файлов — например, PNG, FLV, EBML.

      Порядок от младшего к старшему [ править ]

      Порядок от младшего к старшему (англ. little-endian): [math]A_0,\dots,A_n[/math] , запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем иногда его называют интеловский порядок байт (по названию фирмы-создателя архитектуры x86).

      В противоположность порядку big-endian, соглашение little-endian поддерживают меньше кросс-платформенных протоколов и форматов данных; существенные исключения: USB, конфигурация PCI, таблица разделов GUID, рекомендации FidoNet.

      Переключаемый порядок [ править ]

      Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC (но не PowerPC 970), DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байт выбирается программно во время инициализации операционной системы, но может быть выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байт операционной системы. Переключаемый порядок байт иногда называют англ. bi-endian.

      Смешанный порядок [ править ]

      Смешанный порядок байт (англ. middle-endian) иногда используется при работе с числами, длина которых превышает машинное слово. Число представляется последовательностью машинных слов, которые записываются в формате, естественном для данной архитектуры, но сами слова следуют в обратном порядке.

      Классический пример middle-endian — представление [math]4[/math] -байтных целых чисел на [math]16[/math] -битных процессорах семейства PDP-11 (известен как PDP-endian). Для представления двухбайтных значений (слов) использовался порядок little-endian, но [math]4[/math] -хбайтное двойное слово записывалось от старшего слова к младшему.

      В процессорах VAX и ARM используется смешанное представление для длинных вещественных чисел.

      Различия [ править ]

      Существенным достоинством little-endian по сравнению с big-endian порядком записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байт (при условии, что читаемое число помещается в диапазон). Так, если в ячейке памяти содержится число [math]00000022_<16>[/math] , то прочитав его как int16 (два байта) мы получим число [math]0022_<16>[/math] , прочитав один байт — число [math]22_<16>[/math] . Однако, это же может считаться и недостатком, потому что провоцирует ошибки потери данных.

      Обратно, считается что у little-endian, по сравнению с big-endian есть «неочевидность» значения байт памяти при отладке (последовательность байт (A1, B2, C3, D4) на самом деле значит [math]D4C3B2A1_<16>[/math] , для big-endian эта последовательность (A1, B2, C3, D4) читалась бы «естественным» для арабской записи чисел образом: [math]A1B2C3D4_<16>[/math] ). Наименее удобным в работе считается middle-endian формат записи; он сохранился только на старых платформах.

      Для записи длинных чисел (чисел, длина которых существенно превышает разрядность машины) обычно предпочтительнее порядок слов в числе little-endian (поскольку арифметические операции над длинными числами производятся от младших разрядов к старшим). Порядок байт в слове — обычный для данной архитектуры.

      Маркер последовательности байт [ править ]

      Для определения формата представления Юникода в начало текстового файла записывается сигнатура — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый маркером последовательности байт (англ. byte order mark (BOM)). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует.

      neerc.ifmo.ru

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

      • Приказом фсс рф от 17092012 n 335 Приказ Фонда социального страхования Российской Федерации от 17.09.2012 N 335 "Об утверждении форм документов, применяемых для выплаты в 2012 и 2013 годах страхового обеспечения и иных выплат в субъектах Российской Федерации, участвующих в реализации пилотного проекта, предусматривающего […]
      • Пособие для телохранителя Пособие для телохранителя Заказные убийства, захват заложников с целью выкупа, кровавые бесчинства “отморозков” — это повседневная реальность в России и других странах СНГ. Проблема обеспечения физической безопасности граждан (особенно состоятельных) сегодня актуальна как никогда раньше. […]
      • Правила cw css v34 Обсуждения . ☆☆|Правила КВ|☆☆. 2 сообщения Правила КВ. Ниже, в следующем сообщении есть общепринятые правила КВа здесь же, правила принятые порталом Морозилка и игроками клана CSMВы можете их дополнить или обжаловать.. 1) Не используем мат. Иначе вас кикнет антимат, будете играть в […]
      • Приказ 403 от 05052012 года с изменениями Приказ МВД РФ от 5 мая 2012 г. N 403 "О полномочиях должностных лиц системы МВД России по составлению протоколов об административных правонарушениях и административному задержанию" (с изменениями и дополнениями) (утратил силу) Приказ МВД РФ от 5 мая 2012 г. N 403"О полномочиях […]
      • Выплата пенсии в ноябре 2014 года Подписка на новости Письмо для подтверждения подписки отправлено на указанный вами e-mail. 19 ноября 2014 Отделение Пенсионного фонда РФ по Санкт-Петербургу и Ленинградской области сообщает, что выплата пенсий через отделения почтовой связи ОАО «Почта России» и кредитные организации […]
      • Учебное пособие теория бухгалтерского учета Теория бухгалтерского учета. Терентьева Т.В. Учебное пособие разработано в соответствии с программой курса, а также требованиями образовательного стандарта России к учебной дисциплине "Теория бухгалтерского учета". Раскрываются основополагающие принципы, сущность, базовые понятия, […]
      • Приказ 834н от 15122014 об утверждении форм PRO kurort Dr. Manshina о курортах и курортном лечении суббота, 5 декабря 2015 г. Унифицированные формы медицинской документации: Приказ Минздрава РФ от 15.12.2014 N 834н Приказ Минздрава России от 15.12.2014 № 834н «Об утверждении унифицированных форм медицинской документации, […]
      • Правила оформлення пояснювальної записки прикладная математика Вимоги до оформлення пояснювальної записки Пояснювальна записка до курсової роботи містить такі складові елементи: 1. Титульний аркуш.2. Реферат.3. Зміст.4. Завдання до курсової роботи або постановка задачі.5. Вступ.6. Теоретична частина.7. Опис програми: загальна […]