Файл: Анализ методов кодирования данных (Общие сведения и понятия в информатике).pdf
Добавлен: 18.05.2023
Просмотров: 362
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Общие сведения и понятия в информатике
1.4. Понятие избыточность информации и необходимость ее сжатия
2.1. Кодирование данных в вычислительной технике
2.2. Двоичная система счисления
ГЛАВА 3. ПРЕДСТАВЛЕНИЕ ДАННЫХ РАЗЛИЧНОЙ ПРИРОДЫ В ЭВМ
3.1. Представление логических данных
3.2. Кодирование текстовых данных
3.3. Единая система кодирования текстовых данных
3.4. Представление и обработка числовой информации в компьютере
3.5. Кодирование звуковых данных
На базе этой кодировки ныне действуют кодировки КОИ8-Р (русская) и КОИ8-У (украинская). Сегодня кодировка КОИ8-Р имеет широкое распространение в компьютерных сетях на территории России и в некоторых службах российского сектора Интернета. В частности, в России она де-факто является стандартной в сообщениях электронной почты и телеконференций. Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название кодировки /50 (International Standard Organization) международный институт стандартизации. На практике данная кодировка используется редко.
На компьютерах, работающих в операционных системах MS-DOS, могут действовать еще две кодировки (кодировка ГОСТ и кодировка ГОСТ-альтернативная). Первая из них считалась устаревшей даже в первые годы появления персональной вычислительной техники, но вторая используется, и по сей день.
Таблица символов Альтернативной кодировки ГОСТ, коды 128—255, коды 0—127 соответствуют ASCII.
|
Таблица символов Альтернативной кодировки ГОСТ, коды 128—255, коды 0—127 соответствуют ASCII. |
||||||||||||||||
|
+0 |
+1 |
+2 |
+3 |
+4 |
+5 |
+6 |
+7 |
+8 |
+9 |
+A |
+B |
+C |
+D |
+E |
+F |
|
|
80h |
А U+0410 |
Б U+0411 |
В U+0412 |
Г U+0413 |
Д U+0414 |
Е U+0415 |
Ж U+0416 |
З U+0417 |
И U+0418 |
Й U+0419 |
К U+041A |
Л U+041B |
М U+041C |
Н U+041D |
О U+041E |
П U+041F |
|
90h |
Р U+0420 |
С U+0421 |
Т U+0422 |
У U+0423 |
Ф U+0424 |
Х U+0425 |
Ц U+0426 |
Ч U+0427 |
Ш U+0428 |
Щ U+0429 |
Ъ U+042A |
Ы U+042B |
Ь U+042C |
Э U+042D |
Ю U+042E |
Я U+042F |
|
A0h |
а U+0430 |
б U+0431 |
в U+0432 |
г U+0433 |
д U+0434 |
е U+0435 |
ж U+0436 |
з U+0437 |
и U+0438 |
й U+0439 |
к U+043A |
л U+043B |
м U+043C |
н U+043D |
о U+043E |
п U+043F |
|
B0h |
░ U+2591 |
▒ U+2592 |
▓ U+2593 |
│ U+2502 |
┤ U+2524 |
╡ U+2561 |
╢ U+2562 |
╖ U+2556 |
╕ U+2555 |
╣ U+2563 |
║ U+2551 |
╗ U+2557 |
╝ U+255D |
╜ U+255C |
╛ U+255B |
┐ U+2510 |
|
C0h |
└ U+2514 |
┴ U+2534 |
┬ U+252C |
├ U+251C |
─ U+2500 |
┼ U+253C |
╞ U+255E |
╟ U+255F |
╚ U+255A |
╔ U+2554 |
╩ U+2569 |
╦ U+2566 |
╠ U+2560 |
═ U+2550 |
╬ U+256C |
╧ U+2567 |
|
D0h |
╨ U+2568 |
╤ U+2564 |
╥ U+2565 |
╙ U+2559 |
╘ U+2558 |
╒ U+2552 |
╓ U+2553 |
╫ U+256B |
╪ U+256A |
┘ U+2518 |
┌ U+250C |
█ U+2588 |
▄ U+2584 |
▌ U+258C |
▐ U+2590 |
▀ U+2580 |
|
E0h |
р U+0440 |
с U+0441 |
т U+0442 |
у U+0443 |
ф U+0444 |
х U+0445 |
ц U+0446 |
ч U+0447 |
ш U+0448 |
щ U+0449 |
ъ U+044A |
ы U+044B |
ь U+044C |
э U+044D |
ю U+044E |
я U+044F |
|
F0h |
Ё U+0401 |
ё U+0451 |
╭ U+256D |
╮ U+256E |
╯ U+256F |
╰ U+2570 |
→ U+2192 |
← U+2190 |
↓ U+2193 |
↑ U+2191 |
÷ U+00F7 |
± U+00B1 |
№ U+2116 |
¤ U+00A4 |
■ U+25A0 |
NBSP U+00A0 |
Для работы в среде операционной системы MS-DOS используется «альтернативная» кодировка, в терминологии фирмы Microsoft - СР866 (КОИ-7).
Фирма Apple разработала для компьютеров Macintosh свою собственную кодировку русских букв (Мас).
Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.
Одному и тому же двоичному коду в разных кодовых таблицах ставится в соответствие различные символы.
|
Двоичный код |
Десятичный код |
КОИ8 |
СР1251 |
СР866 |
Мас |
ISO |
|
11000010 |
194 |
б |
В |
- |
- |
Т |
К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов. При работе в приложениях Windows предусмотрена возможность автоматической перекодировки документов, созданных в приложениях MS-DOS.
При работе в Интернет с использованием броузеров Internet Explorer и Netscape Communicator происходит автоматическая перекодировка Web-страниц.
3.3. Единая система кодирования текстовых данных
Если проанализировать организационные трудности, связанные с созданием единой системы кодирования текстовых данных, то можно прийти к выводу, что они вызваны ограниченным набором кодов (256).
В то же время очевидно, что если, например, кодировать символы не восьмиразрядными двоичными числами, а числами с большим количеством разрядов, то и диапазон возможных значений кодов станет намного больше. Такая система, основанная на 16-разрядном кодировании символов, получила название универсальной —UNICODE. Шестнадцать разрядов позволяют обеспечить уникальные коды для 65536 различных символов — этого поля достаточно для размещения в одной таблице символов большинства языков планеты.
Несмотря на тривиальную очевидность такого подхода, простой механический переход на данную систему долгое время сдерживался из-за недостаточных ресурсов средств вычислительной техники (в системе кодирования UNICODE все текстовые документы автоматически становятся вдвое длиннее).
Во второй половине 90-х годов технические средства достигли необходимого уровня обеспеченности ресурсами, и сегодня мы наблюдаем постепенный перевод документов и программных средств на универсальную систему кодирования.
Тысячи знаков языковой группы юго-восточной Азии никак невозможно было описать в одном байте информации, который выделялся для кодирования символов в расширенных версиях ASCII. В результате был создан консорциум под названием Юникод (Unicode — Unicode Consortium) при сотрудничестве многих лидеров IT индустрии (те, кто производит софт, кто кодирует железо, кто создает шрифты), которые были заинтересованы в появлении универсальной кодировки текста.
Первой вариацией, вышедшей под эгидой консорциума Юникод, была UTF 32.
Цифра в названии кодировки означает количество бит, которое используется для кодирования одного символа. 32 бита составляют 4 байта информации, которые понадобятся для кодирования одного единственного знака в новой универсальной кодировке UTF.
В результате чего, один и тот же файл с текстом, закодированный в расширенной версии ASCII и в UTF-32, в последнем случае будет иметь размер (весить) в четыре раза больше. Это плохо, но зато теперь у нас появилась возможность закодировать с помощью ЮТФ число знаков, равное двум в тридцать второй степени (миллиарды символов, которые покроют любое реально необходимое значение с колоссальным запасом).
Но многим странам с языками европейской группы такое огромное количество знаков использовать в кодировке вовсе и не было необходимости, однако при задействовании UTF-32 они ни за что ни про что получали четырехкратное увеличение веса текстовых документов, а в результате и увеличение объема интернет трафика и объема хранимых данных. Это много, и такое расточительство себе никто не мог позволить.
В результате развития Юникода появилась UTF-16, которая получилась настолько удачной, что была принята по умолчанию как базовое пространство для всех символов, которые у нас используются. Она использует два байта для кодирования одного знака. Сколько символов можно закодировать в UTF-16 с помощью 16 бит? 65 536 (два в степени шестнадцать), и именно это число было принято за базовое пространство в Юникоде. Помимо этого существуют способы закодировать с помощью нее и около двух миллионов знаков, но ограничились расширенным пространством в миллион символов текста.
Но даже эта удачная версия кодировки Юникода не принесла особого удовлетворения тем, кто писал, допустим, программы только на английском языке, ибо у них, после перехода от расширенной версии ASCII к UTF-16, вес документов увеличивался в два раза (один байт на один символ в Аски и два байта на тот же самый символ в ЮТФ-16).
Вот именно для удовлетворения всех и вся в консорциуме Unicode было решено придумать кодировку переменной длины. Ее назвали UTF-8. Несмотря на восьмерку в названии, она действительно имеет переменную длину, т.е. каждый символ текста может быть закодирован в последовательность длиной от одного до шести байт.
На практике же в UTF-8 используется только диапазон от одного до четырех байт, потому что за четырьмя байтами кода ничего уже даже теоретически невозможно представить. Все латинские знаки в ней кодируются в один байт, так же как и в старой доброй ASCII.
Что примечательно, в случае кодирования только латиницы, даже те программы, которые не понимают Юникод, все равно прочитают то, что закодировано в ЮТФ-8. Т.е. базовая часть Аски просто перешла в это детище консорциума Unicode.
Кириллические же знаки в UTF-8 кодируются в два байта, а, например, грузинские — в три байта. Консорциум Юникод после создания UTF 16 и 8 решил основную проблему — теперь у нас в шрифтах существует единое кодовое пространство. И теперь их производителям остается только, исходя из своих сил и возможностей, заполнять его векторными формами символов текста.
3.4. Представление и обработка числовой информации в компьютере
Целое число без знака располагается в регистре (слове, полуслове или двойном слове) так, что его самый младший двоичный разряд записывается в крайний правый бит разрядной сетки, причем все разряды должны быть обязательно заполнены, даже если в этом разряде будет храниться “незначащий ноль”. Например, десятичное число 1910=100112 в 16-разрядном представлении (полуслове) запишется так:
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
При такой форме представления целых чисел без знака диапазон их возможных значений находится в пределах от 0 до 2n-1, где n – число разрядов в регистре (разрядной сетке).
В таблице приведены максимальные значения десятичных чисел без знака и соответствующее им число разрядов (бит):
|
Число разрядов. |
Максимальное двоичное число без знака. |
Максимальное десятичное число без знака. |
|
8 |
11111111 |
28 –1 = 255 |
|
16 |
1111111111111111 |
216 –1 = 65535 |
|
32 |
11111111111111111111111111111111 |
232 –1 = 4294967295 |
Для представления целых чисел со знаком один разряд, как правило, старший отводится под знак числа. Знак положительного числа кодируется нулем, а знак отрицательного - единицей в этом разряде.
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
Знак числа «+»
Такая форма представления целых чисел со знаком, когда крайний левый бит разрядной сетки отводится под знак числа, а остальные n-1 бит отводятся под цифры числа в двоичной системе счисления, называется прямым кодом двоичного числа.
Прямой код положительного числа фактически совпадает с самим числом, а прямой код отрицательного числа отличается от положительного только наличием единицы в знаковом разряде.
Естественно, что выделение одного разряда под знак числа приводит к уменьшению имеющихся в нашем распоряжении разрядов регистра на единицу. Поэтому, максимальное значение числа, которое можно представить в n-разрядном регистре, также уменьшится. Теперь оно будет равно 2n-1-1 .
Форма представления двоичных чисел в виде прямого кода используется в компьютере только для представления целых положительных чисел.
Сложение положительных чисел в компьютерной арифметике осуществляется над прямыми кодами двоичных чисел. Для реализации операции вычитания, используется специальная форма представления отрицательных чисел, называемая дополнительным кодом, что позволяет заменить операцию вычитания простым сложением. При этом операция сложения выполняется над всеми разрядами полученного дополнительного кода, т.е. распространяется и на разряды знаков, рассматриваемых в данном случае как разряды целой части числа.
Дополнительный код отрицательного двоичного числа, получается, по следующему правилу:
- отрицательное двоичное число записывается в прямом коде;
- все двоичные разряды, кроме знакового, инвертируются (единицы заменяются нулями, а нули – единицами);
- к инвертированному числу прибавляется единица по правилам сложения двоичных чисел.