Изменения

Перейти к: навигация, поиск

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

52 байта добавлено, 19:30, 4 сентября 2022
м
rollbackEdits.php mass rollback
== Таблицы кодировок ==
На заре компьютерной эры на каждый символ было отведено по пять бит. Это было связано с малым количеством оперативной памяти на компьютерах тех лет. В эти <tex>6432</tex> символа входили только управляющие символы и строчные буквы английского алфавита.
С ростом производительности компьютеров стали появляться таблицы кодировок с большим количеством символов.
Но для многих языков (например, арабского, японского, китайского) <tex>256</tex> символов недостаточно, поэтому развитие кодировок продолжалось, что привело к появлению UNICODE.
 
==Кодировки стандарта ASCII==
{{Определение
'''<tex>7</tex> бит:'''
* '''ASCII7''' {{- --}} первая кодировка, пригодная для работы с текстом. Помимо маленьких букв английского алфавита и служебных символов, содержит большие буквы английского языка, цифры, знаки препинания и другие символы.
'''Кодировки стандарта ASCII (<tex>8</tex> бит):'''
* '''ASCII''' {{- --}} первая кодировка, в которой стало возможно использовать символы национальных алфавитов.* '''КОИ8-R''' {{--- }} первая русская кодировка. Символы кириллицы расположены не в алфавитном порядке. Их разместили в верхнюю половину таблицы так, чтобы позиции кириллических символов соответствовали их фонетическим аналогам в английском алфавите. Это значит, что даже при потере старшего бита каждого символа, например, при проходе через устаревший семибитный модем, текст остается "читаемым".* '''CP866''' {{--- }} русская кодировка, использовавшаяся на компьютерах IBM в системе DOS.* '''Windows-1251''' {{--- }} русская кодировка, использовавшаяся в русскоязычных версиях операционной системы Windows в начале 90-х годов. Кириллические символы идут в алфавитном порядке. Содержит все символы, встречающиеся в типографике обычного текста (кроме знака ударения).
===Структурные свойства таблицы===
* Цифры 0-9 представляются своими двоичными значениями (например, <tex>5=0101_2</tex>), перед которыми стоит <tex>0011_2</tex>. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева <tex>0011_2</tex> к каждому двоично-десятичному полубайту.
===UTF-16===
UTF-16 {{---}} один из способов кодирования '''символов''' (англ. ''code point'') из Unicode в виде последовательности <tex>16</tex>-битных '''слов''' (англ. ''code unit''). Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (общим количеством <tex>1\ 112\ 064</tex>), причем <tex>42</tex>-байтные символы представляются как есть, а более длинные {{---}} с помощью суррогатных пар (англ. ''surrogate pair''), для которых и вырезан диапазон <tex>D800_{16}..DFFF_{16}</tex>.
В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от <tex>0000_{16}</tex> до <tex>FFFF_{16}</tex>). При этом можно кодировать символы Unicode в дипазонах диапазонах <tex>0000_{16}..D7FF_{16}</tex> и <tex>E000_{16}..10FFFF_{16}</tex>. Исключенный отсюда диапазон <tex>D800_{16}..DFFF_{16}</tex> используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя <tex>16</tex>-битными словами. Символы Unicode до <tex>FFFF_{16}</tex> включительно (исключая диапазон для суррогатов) записываются как есть <tex>16</tex>-битным словом. Символы же в диапазоне <tex>10000_{16}..10FFFF_{16}</tex> (больше <tex>16</tex> бит) уже кодируются парой <tex>16</tex>-битных слов. Для этого их код арифметически сдвигается до нуля (из него вычитается минимальное число <tex>10000_{16}</tex>). В результате получится значение от нуля до <tex>FFFF_FFFFF_{16}</tex>, которое занимает до <tex>20</tex> бит. Старшие <tex>10</tex> бит этого значения идут в лидирующее (первое) слово, а младшие <tex>10</tex> бит — в последующее (второе). При этом в обоих словах старшие <tex>6</tex> бит используются для обозначения суррогата. Биты с <tex>11</tex> по <tex>15</tex> имеют значения <tex>11011_2</tex>, а <tex>10</tex>-й бит содержит <tex>0</tex> у лидирующего слова и <tex>1</tex> — у последующего. В связи с этим можно легко определить к чему относится каждое слово.
====UTF-16LE и UTF-16BE====
Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт. Который из двух байт в словах идёт впереди, старший или младший, зависит от порядка байт. Подробнее об этом будет сказано ниже.
===UTF-32===
|}
==Смотри См. также==
* [[Представление целых чисел: прямой код, код со сдвигом, дополнительный код]]
* [[Представление вещественных чисел]]
1632
правки

Навигация