Одно из основных достоинств компьютера связано с тем, что это удивительно универсальная машина. Каждый, кто хоть когда-нибудь с ним сталкивался, знает, что занятие арифметическими подсчетами составляет совсем не главный метод использования компьютера. Компьютеры прекрасно воспроизводят музыку и видеофильмы, с их помощью можно организовывать речевые и видеоконференции в Интернет, создавать и обрабатывать графические изображения, а возможность использования компьютера в сфере компьютерных игр на первый взгляд выглядит совершенно несовместимой с образом суперарифмометра, перемалывающего сотни миллионов цифр в секунду.
Составляя информационную модель объекта или явления, мы должны договориться о том, как понимать те или иные обозначения. То есть договориться о виде представления информации.
Человек выражает свои мысли в виде предложений, составленных из слов. Они являются алфавитным представлением информации. Основу любого языка составляет алфавит - конечный набор различных знаков (символов) любой природы, из которых складывается сообщение.
Одна и та же запись может нести разную смысловую нагрузку. Например, набор цифр 251299 может обозначать: массу объекта; длину объекта; расстояние между объектами; номер телефона; запись даты 25 декабря 1999 года.
Для представления информации могут использоваться разные коды и, соответственно, надо знать определенные правила - законы записи этих кодов, т.е. уметь кодировать.
Код - набор условных обозначений для представления информации.
Кодирование - процесс представления информации в виде кода.
Для общения друг с другом мы используем код - русский язык. При разговоре этот код передается звуками, при письме - буквами. Водитель передает сигнал с помощью гудка или миганием фар. Вы встречаетесь с кодированием информации при переходе дороги в виде сигналов светофора. Таким образом, кодирование сводиться к использованию совокупности символов по строго определенным правилам.
Кодировать информацию можно различными способами: устно; письменно; жестами или сигналами любой другой природы.
Кодирование данных двоичным кодом.
По мере развития техники появлялись разные способы кодирования информации. Во второй половине XIXвека американский изобретатель Сэмюэль Морзе изобрел удивительный код, который служит человечеству до сих пор. Информация кодируется тремя символами: длинный сигнал (тире), короткий сигнал (точка), нет сигнала (пауза) - для разделения букв.
Своя система существует и в вычислительной технике - она называется двоичным кодированием и основана на представлении данных последовательностью всего двух знаков: 0 и 1. Эти знаки называютсядвоичными цифрами , по-английски -binary digit или сокращенноbit(бит).
Одним битом могут быть выражены два понятия: 0 или 1 (да илинет , черное илибелое , истина илиложь и т.п.). Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия:
Тремя битами можно закодировать восемь различных значений:
000 001 010 011 100 101 110 111
Увеличивая на единицу количество разрядов в системе двоичного кодирования, мы увеличиваем в два раза количество значений, которое может быть выражено в данной системе, то есть общая формула имеет вид:
где N- количество независимых кодируемых значений;
m - разрядность двоичного кодирования, принятая в данной системе.
Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Число символов в алфавите – это его мощность. Для каждого вида используется свой способ кодирования графической информации. Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 («Код обмена информацией, 8-битный»).
Да, не удивляйтесь: пустое место в тексте тоже должно иметь свое обозначение. Множество символов, с помощью которых записывается текст, называется алфавитом. Двоичный код каждого символа в компьютерном тексте занимает 1 байт памяти. Тексты вводятся в память компьютера с помощью клавиатуры.
С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации. Этот код просто порядковый номер символа в двоичной системе счисления. Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).
Кодирование текстовой информации
Обращаю ваше внимание на то, что в таблице кодировки буквы (прописные и строчные) располагаются в алфавитном порядке, а цифры упорядочены по возрастанию значений. Для букв русского алфавита также соблюдается принцип последовательного кодирования. К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.
Кодирование информации в компьютере
Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5. Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251. С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode.
Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.
Иногда бывает так, что текст, состоящий из букв русского алфавита, полученный с другого компьютера, невозможно прочитать — на экране монитора видна какая-то «абракадабра». Современный компьютер может обрабатывать числовую, текстовую, графическую, звуковую и видео информацию. Наглядно это можно представить в виде фрагмента объединенной таблицы кодировки символов.
Впрочем, в большинстве случаев о перекодировке текстовых документов заботится на пользователь, а специальные программы — конверторы, которые встроены в приложения.
Для определения числового кода символа в кодировке Windows (СР1251) нужно при помощи мыши или клавиш управления курсором выбрать нужный символ, затем щелкнуть по кнопке Клавиша.
I = 1/512 * 1024 * 1024 * 8 = 16384 бит. — перевели в биты информационный объем сообщения. В середине 50-х годов для больших ЭВМ, которые применялись в научных и военных исследованиях, впервые в графическом виде было реализовано представление данных. Путем разбиения графического изображения (дискретизации) происходит преобразование графической информации из аналоговой формы в дискретную.
Чем меньше размер точки, а, значит, изображение составляется из большего количества точек, тем выше качество кодирования. Создание и хранение графических объектов возможно в нескольких видах — в виде векторного, фрактального или растрового изображения. Отдельным предметом считается 3D (трехмерная) графика, в которой сочетаются векторный и растровый способы формирования изображений. Она изучает методы и приемы построения объемных моделей объектов в виртуальном пространстве.
Чем она выше, то есть больше количество строк растра и точек в строке, тем выше качество изображения. Это происходит в результате анализа светового потока, попадающего на сетчатку глаза от отражающих или излучающих объектов.
Каким же образом текстовая информация представлена в памяти компьютера?
В качестве примера объекта первого типа можно привести электронно-лучевую трубку монитора, второго типа — полиграфический отпечаток. Эту цветовую модель лучше применять в тех графических редакторах, в которых изображения создают сами, а не обрабатывают уже готовые. Направление вектора задается в угловых градусах и определяет цветовой оттенок.
Внутреннее представление слов в памяти компьютера
Каждому из основных цветов ставится в соответствие дополнительный цвет (дополняющий основной до белого). В основном такой метод принят в полиграфии. Это довольно близко к чувствительности человеческого глаза. При кодировании с помощью системы CMYK для представления цветной графики надо иметь 8*4=32 двоичных разряда.
Попробуем с помощью таблицы ASCII представить, как будут выглядеть слова в памяти компьютера.
Сам код точки растра в данном случае означает не сам по себе цвет, а только его номер (индекс) в палитре. Двоичный код изображения, выводимого на экран, хранится в видеопамяти. Информация о векторном изображении кодируется как обычная буквенно-цифровая и обрабатывается специальными программами. Но в отличии от векторной ее базовым элементом является сама математическая формула.
22. КОДИРОВАНИЕ ИНФОРМАЦИИ
22.1. Общие сведения
Кодирование – представление информации в альтернативном виде. По своей сути кодовые системы (или просто коды) аналогичны , в которых элементам кодируемой информации соответствуют кодовые обозначения. Отличие заключается в том, что в шифрах присутствует переменная часть (ключ), которая для определенного исходного сообщения при одном и том же алгоритме шифрования может выдавать разные шифртексты. В кодовых системах переменной части нет. Поэтому одно и то же исходное сообщение при кодировании, как правило, всегда выглядит одинаково 1 . Другой отличительной особенностью кодирования является применение кодовых обозначений (замен) целиком для слов, фраз или чисел (совокупности цифр). Замена элементов кодируемой информации кодовыми обозначениями может быть выполнена на основе соответствующей таблицы (наподобие таблицы шифрозамен) либо определена посредством функции или алгоритма кодирования.
В качестве элементов кодируемой информации могут выступать:
Буквы, слова и фразы естественного языка;
Различные символы, такие как знаки препинания, арифметические и логические операции, операторы сравнения и т.д. Следует отметить, что сами знаки операций и операторы сравнения – это кодовые обозначения;
Аудиовизуальные образы;
Ситуации и явления;
Наследственная информация;
Кодовые обозначения могут представлять собой:
Буквы и сочетания букв естественного языка;
Графические обозначения;
Электромагнитные импульсы;
Световые и звуковые сигналы;
Набор и сочетание химических молекул;
Кодирование может выполняться в целях :
Удобства хранения, обработки и передачи информации (как правило, закодированная информация представляется более компактно, а также пригодна для обработки и передачи автоматическими программно-техническими средствами);
Удобства информационного обмена между субъектами;
Наглядности отображения;
Идентификации объектов и субъектов;
Сокрытия секретной информации;
Кодирование информации бывает одно- и многоуровневым . Примером одноуровневого кодирования служат световые сигналы, подаваемые светофором (красный – стой, желтый – приготовиться, зеленый – вперед). В качестве многоуровневого кодирования можно привести представление визуального (графического) образа в виде файла фотографии. Вначале визуальная картинка разбивается на составляющие элементарные элементы (пикселы), т.е. каждая отдельная часть визуальной картинки кодируется элементарным элементом. Каждый элемент представляется (кодируется) в виде набора элементарных цветов (RGB: англ. red – красный, green – зеленый, blue – синий) соответствующей интенсивностью, которая в свою очередь представляется в виде числового значения. Впоследствии наборы чисел, как правило, преобразуются (кодируются) с целью более компактного представления информации (например, в форматах jpeg, png и т.д.). И наконец, итоговые числа представляются (кодируются) в виде электромагнитных сигналов для передачи по каналам связи или областей на носителе информации. Следует отметить, что сами числа при программной обработке представляются в соответствии с принятой системой кодирования чисел.
Кодирование информации может быть обратимым и необратимым . При обратимом кодировании на основе закодированного сообщения можно однозначно (без потери качества) восстановить кодируемое сообщение (исходный образ). Например, кодирование с помощью азбуки Морзе или штрихкода. При необратимом кодировании однозначное восстановление исходного образа невозможно. Например, кодирование аудиовизуальной информации (форматы jpg, mp3 или avi) или .
Азбука Морзе - способ кодирования символов (букв алфавита, цифр, знаков препинания и др.) с помощью последовательности «точек» и «тире». За единицу времени принимается длительность одной точки. Длительность тире равна трём точкам. Пауза между элементами одного знака - одна точка (около 1/25 доли секунды), между знаками в слове - 3 точки, между словами - 7 точек. Назван в честь американского изобретателя и художника Сэмюэля Морзе.
Русская буква |
Латинская буква |
Код Морзе | Русская буква |
Латинская буква |
Код Морзе | Символ | Код Морзе |
A | A | · - | Р | R | · - · | 1 | · - - - - |
Б | B | - · · · | С | S | · · · | 2 | · · - - - |
В | W | · - - | Т | T | - | 3 | · · · - - |
Г | G | - - · | У | U | · · - | 4 | · · · · - |
Д | D | - · · | Ф | F | · · - · | 5 | · · · · · |
Е (Ё) | E | · | Х | H | · · · · | 6 | - · · · · |
Ж | V | · · · - | Ц | C | - · - · | 7 | - - · · · |
З | Z | - - · · | Ч | O | - - - · | 8 | - - - · · |
И | I | · · | Ш | CH | - - - - | 9 | - - - - · |
Й | J | · - - - | Щ | Q | - - · - | 0 | - - - - - |
К | K | - · - | Ъ | N | - - · - - | Точка | · · · · · · |
Л | L | · - · · | Ы | Y | - · - - | Запятая | · - · - · - |
М | M | - - | Ь (Ъ) | X | - · · - | - | · · - - · · |
Н | N | - · | Э | E | · · - · · | ! | - - · · - - |
О | O | - - - | Ю | U | · · - - | @ | · - - · - · |
П | P | · - - · | Я | A | · - · - | Конец связи (end contact) | · · - · - |
Рис.22.1. Фрагмент азбуки Морзе
Изначально азбука Морзе применялась для передачи сообщений в телеграфе. При этом точки и тире передавались в виде электрических сигналов, проходящих по проводам. В настоящий момент азбуку Морзе, как правило, используют в местах, где другие средства обмена информации недоступны (например, в тюрьмах).
Любопытный факт связан с изобретателем первой лампочки Томасом Альвой Эдисоном (1847-1931 гг.). Он плохо слышал и общался со своей женой, Мэри Стиуэлл, с помощью азбуки Морзе. Во время ухаживания Эдисон сделал предложение, отстучав слова рукой, и она ответила тем же способом. Телеграфный код стал обычным средством общения для супругов. Даже когда они ходили в театр, Эдисон клал руку Мэри себе на колено, чтобы она могла «телеграфировать» ему диалоги актеров .
Код Бодо - цифровой 5-битный код. Был разработан Эмилем Бодо в 1870 г. для своего телеграфа. Код вводился прямо клавиатурой, состоящей из пяти клавиш, нажатие или ненажатие клавиши соответствовало передаче или непередаче одного бита в пятибитном коде. Существует несколько разновидностей (стандартов) данного кода (CCITT-1, CCITT-2, МТК-2 и др.) В частности МТК-2 представляет собой модификацию международного стандарта CCITT-2 с добавление букв кириллицы.
Управляющие символы | ||||
Двоичный код |
Десятичный код |
Назначение | ||
01000 | 8 | Возврат каретки | ||
00010 | 2 | Перевод строки | ||
11111 | 31 | Буквы латинские | ||
11011 | 27 | Цифры | ||
00100 | 4 | Пробел | ||
00000 | 0 | Буквы русские | ||
Двоичный код |
Десятичный код |
Латинская буква |
Русская буква |
Цифры и прочие символы |
00011 | 3 | A | А | - |
11001 | 25 | B | Б | ? |
01110 | 14 | C | Ц | : |
01001 | 9 | D | Д | Кто там? |
00001 | 1 | E | Е | З |
01101 | 13 | F | Ф | Э |
11010 | 26 | G | Г | Ш |
10100 | 20 | H | Х | Щ |
00110 | 6 | I | И | 8 |
01011 | 11 | J | Й | Ю |
01111 | 15 | K | К | ( |
10010 | 18 | L | Л | ) |
11100 | 28 | M | М | . |
01100 | 12 | N | Н | , |
11000 | 24 | O | О | 9 |
10110 | 22 | P | П | 0 |
10111 | 23 | Q | Я | 1 |
01010 | 10 | R | Р | 4 |
00101 | 5 | S | С | " |
10000 | 16 | T | Т | 5 |
00111 | 7 | U | У | 7 |
11110 | 30 | V | Ж | = |
10011 | 19 | W | В | 2 |
11101 | 29 | X | Ь | / |
10101 | 21 | Y | Ы | 6 |
10001 | 17 | Z | З | + |
Рис.22.2. Стандарт кода Бодо МТК-2
На следующем рисунке показана телетайпная перфолента с сообщением, переданным с помощью кода Бодо.
Рис. 22.3. Перфолента с кодом Бодо
Следует отметить два интересных факта, связанных с кодом Бодо.
1. Сотрудники телеграфной компании AT&T Гильберто Вернам и Мейджор Джозеф Моборн в 1917 г. предложили идею автоматического шифрования телеграфных сообщений на основе кода Бодо. Шифрование выполнялось .
2. Соответствие между английским и русским алфавитами, принятое в МТК-2, было использовано при создании компьютерных кодировок КОИ-7 и КОИ-8.
ASCII и Unicode.
ASCII (англ. American Standard Code for Information Interchange) - американская стандартная кодировочная таблица для печатных и управляющих символов. Изначально была разработана как 7-битная для представления 128 символов, при использовании в компьютерах на символ выделялось 8 бит (1 байт), где 8-ой бит служил для контроля целостности (бит четности). Позднее, с задействованием 8 бита для представления дополнительных символов (всего 256 символов), например букв национальных алфавитов, стала восприниматься как половина 8-битной. В частности на основе ASCII были разработаны кодировки, содержащие буквы русского алфавита: для операционной системы MS-DOS - cp866 (англ. code page – кодовая страница), для операционной системы MS Windows – Windows 1251, для различных операционных систем – КОИ-8 (код обмена информацией, 8 битов), ISO 8859-5 и другие.
Кодировка ASCII | Дополнительные символы | ||||||||||
Двоичный код |
Десятичный код |
Символ | Двоичный код |
Десятичный код |
Символ | Двоичный код |
Десятичный код |
Символ | Двоичный код |
Десятичный код |
Символ |
00000000 | 0 | NUL | 01000000 | 64 | @ | 10000000 | 128 | Ђ | 11000000 | 192 | А |
00000001 | 1 | SOH | 01000001 | 65 | A | 10000001 | 129 | Ѓ | 11000001 | 193 | Б |
00000010 | 2 | STX | 01000010 | 66 | B | 10000010 | 130 | ‚ | 11000010 | 194 | В |
00000011 | 3 | ETX | 01000011 | 67 | C | 10000011 | 131 | ѓ | 11000011 | 195 | Г |
00000100 | 4 | EOT | 01000100 | 68 | D | 10000100 | 132 | „ | 11000100 | 196 | Д |
00000101 | 5 | ENQ | 01000101 | 69 | E | 10000101 | 133 | … | 11000101 | 197 | Е |
00000110 | 6 | ACK | 01000110 | 70 | F | 10000110 | 134 | † | 11000110 | 198 | Ж |
00000111 | 7 | BEL | 01000111 | 71 | G | 10000111 | 135 | ‡ | 11000111 | 199 | З |
00001000 | 8 | BS | 01001000 | 72 | H | 10001000 | 136 | € | 11001000 | 200 | И |
00001001 | 9 | HT | 01001001 | 73 | I | 10001001 | 137 | ‰ | 11001001 | 201 | Й |
00001010 | 10 | LF | 01001010 | 74 | J | 10001010 | 138 | Љ | 11001010 | 202 | К |
00001011 | 11 | VT | 01001011 | 75 | K | 10001011 | 139 | ‹ | 11001011 | 203 | Л |
00001100 | 12 | FF | 01001100 | 76 | L | 10001100 | 140 | Њ | 11001100 | 204 | М |
00001101 | 13 | CR | 01001101 | 77 | M | 10001101 | 141 | Ќ | 11001101 | 205 | Н |
00001110 | 14 | SO | 01001110 | 78 | N | 10001110 | 142 | Ћ | 11001110 | 206 | О |
00001111 | 15 | SI | 01001111 | 79 | O | 10001111 | 143 | Џ | 11001111 | 207 | П |
00010000 | 16 | DLE | 01010000 | 80 | P | 10010000 | 144 | ђ | 11010000 | 208 | Р |
00010001 | 17 | DC1 | 01010001 | 81 | Q | 10010001 | 145 | ‘ | 11010001 | 209 | С |
00010010 | 18 | DC2 | 01010010 | 82 | R | 10010010 | 146 | ’ | 11010010 | 210 | Т |
00010011 | 19 | DC3 | 01010011 | 83 | S | 10010011 | 147 | “ | 11010011 | 211 | У |
00010100 | 20 | DC4 | 01010100 | 84 | T | 10010100 | 148 | ” | 11010100 | 212 | Ф |
00010101 | 21 | NAK | 01010101 | 85 | U | 10010101 | 149 | 11010101 | 213 | Х | |
00010110 | 22 | SYN | 01010110 | 86 | V | 10010110 | 150 | – | 11010110 | 214 | Ц |
00010111 | 23 | ETB | 01010111 | 87 | W | 10010111 | 151 | - | 11010111 | 215 | Ч |
00011000 | 24 | CAN | 01011000 | 88 | X | 10011000 | 152 | |
11011000 | 216 | Ш |
00011001 | 25 | EM | 01011001 | 89 | Y | 10011001 | 153 | ™ | 11011001 | 217 | Щ |
00011010 | 26 | SUB | 01011010 | 90 | Z | 10011010 | 154 | љ | 11011010 | 218 | Ъ |
00011011 | 27 | ESC | 01011011 | 91 | [ | 10011011 | 155 | › | 11011011 | 219 | Ы |
00011100 | 28 | FS | 01011100 | 92 | \ | 10011100 | 156 | њ | 11011100 | 220 | Ь |
00011101 | 29 | GS | 01011101 | 93 | ] | 10011101 | 157 | ќ | 11011101 | 221 | Э |
00011110 | 30 | RS | 01011110 | 94 | ^ | 10011110 | 158 | ћ | 11011110 | 222 | Ю |
00011111 | 31 | US | 01011111 | 95 | _ | 10011111 | 159 | џ | 11011111 | 223 | Я |
00100000 | 32 | 01100000 | 96 | ` | 10100000 | 160 | |
11100000 | 224 | а | |
00100001 | 33 | ! | 01100001 | 97 | a | 10100001 | 161 | Ў | 11100001 | 225 | б |
00100010 | 34 | " | 01100010 | 98 | b | 10100010 | 162 | ў | 11100010 | 226 | в |
00100011 | 35 | # | 01100011 | 99 | c | 10100011 | 163 | Ј | 11100011 | 227 | г |
00100100 | 36 | $ | 01100100 | 100 | d | 10100100 | 164 | ¤ | 11100100 | 228 | д |
00100101 | 37 | % | 01100101 | 101 | e | 10100101 | 165 | Ґ | 11100101 | 229 | е |
00100110 | 38 | & | 01100110 | 102 | f | 10100110 | 166 | ¦ | 11100110 | 230 | ж |
00100111 | 39 | " | 01100111 | 103 | g | 10100111 | 167 | § | 11100111 | 231 | з |
00101000 | 40 | ( | 01101000 | 104 | h | 10101000 | 168 | Ё | 11101000 | 232 | и |
00101001 | 41 | ) | 01101001 | 105 | i | 10101001 | 169 | © | 11101001 | 233 | й |
00101010 | 42 | * | 01101010 | 106 | j | 10101010 | 170 | Є | 11101010 | 234 | к |
00101011 | 43 | + | 01101011 | 107 | k | 10101011 | 171 | « | 11101011 | 235 | л |
00101100 | 44 | , | 01101100 | 108 | l | 10101100 | 172 | ¬ | 11101100 | 236 | м |
00101101 | 45 | - | 01101101 | 109 | m | 10101101 | 173 | ¬ | 11101101 | 237 | н |
00101110 | 46 | . | 01101110 | 110 | n | 10101110 | 174 | ® | 11101110 | 238 | о |
00101111 | 47 | / | 01101111 | 111 | o | 10101111 | 175 | Ї | 11101111 | 239 | п |
00110000 | 48 | 0 | 01110000 | 112 | p | 10110000 | 176 | ° | 11110000 | 240 | р |
00110001 | 49 | 1 | 01110001 | 113 | q | 10110001 | 177 | ± | 11110001 | 241 | с |
00110010 | 50 | 2 | 01110010 | 114 | r | 10110010 | 178 | І | 11110010 | 242 | т |
00110011 | 51 | 3 | 01110011 | 115 | s | 10110011 | 179 | і | 11110011 | 243 | у |
00110100 | 52 | 4 | 01110100 | 116 | t | 10110100 | 180 | ґ | 11110100 | 244 | ф |
00110101 | 53 | 5 | 01110101 | 117 | u | 10110101 | 181 | µ | 11110101 | 245 | х |
00110110 | 54 | 6 | 01110110 | 118 | v | 10110110 | 182 | ¶ | 11110110 | 246 | ц |
00110111 | 55 | 7 | 01110111 | 119 | w | 10110111 | 183 | · | 11110111 | 247 | ч |
00111000 | 56 | 8 | 01111000 | 120 | x | 10111000 | 184 | ё | 11111000 | 248 | ш |
00111001 | 57 | 9 | 01111001 | 121 | y | 10111001 | 185 | № | 11111001 | 249 | щ |
00111010 | 58 | : | 01111010 | 122 | z | 10111010 | 186 | є | 11111010 | 250 | ъ |
00111011 | 59 | ; | 01111011 | 123 | { | 10111011 | 187 | » | 11111011 | 251 | ы |
00111100 | 60 | < | 01111100 | 124 | | | 10111100 | 188 | ј | 11111100 | 252 | ь |
00111101 | 61 | = | 01111101 | 125 | } | 10111101 | 189 | Ѕ | 11111101 | 253 | э |
00111110 | 62 | > | 01111110 | 126 | ~ | 10111110 | 190 | ѕ | 11111110 | 254 | ю |
00111111 | 63 | ? | 01111111 | 127 | DEL | 10111111 | 191 | ї | 11111111 | 255 | я |
Рис. 22.4. Кодовая страница Windows 1251
Unicode - стандарт кодирования символов, позволяющий представить знаки почти всех письменных языков. Стандарт был предложен в 1991 г. некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать большее число символов (чем в ASCII и прочих кодировках) за счет двухбайтового кодирования символов (всего 65536 символов). В документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы.
Коды в стандарте Unicode разделены на несколько разделов. Первые 128 кодов соответствуют кодировке ASCII. Далее расположены разделы букв различных письменностей, знаки пунктуации и технические символы. В частности прописным и строчным буквам русского алфавита соответствуют коды 1025 (Ё), 1040-1103 (А-я) и 1105 (ё).
Шрифт Брайля - рельефно-точечный тактильный шрифт, предназначенный для письма и чтения незрячими людьми. Был разработан в 1824 г. французом Луи Брайлем (Louis Braille), сыном сапожника. Луи в возрасте трёх лет потерял зрение, в результате воспаления глаз, начавшегося от того, что мальчик поранился шорным ножом (подобие шила) в мастерской отца. В возрасте 15 лет он создал свой рельефно-точечный шрифт, вдохновившись простотой «ночного шрифта» капитана артиллерии Шарля Барбье (Charles Barbier), который использовался военными того времени для чтения донесений в темноте.
Для изображения символов (в основном букв и цифр) в шрифте Брайля используются 6 точек, расположенных в два столбца, по 3 в каждом.
Рис. 22.5. Нумерация точек
Каждому символу соответствует свой уникальный набор выпуклых точек. Т.о. шрифт Брайля представляет собой систему для кодирования 2 6 = 64 символов. Но присутствие в шрифте управляющих символов (например, переход к буквам или цифрам) позволяет увеличить количество кодируемых символов.
Управляющие символы | |||
Символ шрифта Брайля |
Назначение | ||
⠠ | Буквы | ||
⠼ | Цифры | ||
Буквы, цифры и остальные символы | |||
Символ шрифта Брайля |
Латинские буквы |
Русские буквы |
Цифры |
⠁ | A | А | 1 |
⠃ | B | Б | 2 |
⠉ | C | Ц | 3 |
⠙ | D | Д | 4 |
⠑ | E | Е | 5 |
⠋ | F | Ф | 6 |
⠛ | G | Г | 7 |
⠓ | H | Х | 8 |
⠊ | I | И | 9 |
⠚ | J | Ж | 0 |
⠅ | K | К | |
⠇ | L | Л | |
⠍ | M | М | |
⠝ | N | Н | |
⠕ | O | О | |
⠏ | P | П | |
⠟ | Q | Ч | |
⠗ | R | Р | |
⠎ | S | С | |
⠞ | T | Т | |
⠥ | U | У | |
⠧ | V | ||
⠺ | W | В | |
⠭ | X | Щ | |
⠽ | Y | ||
⠵ | Z | З | |
⠡ | Ё | ||
⠯ | Й | ||
⠱ | Ш | ||
⠷ | Ъ | ||
⠮ | Ы | ||
⠾ | Ь | ||
⠪ | Э | ||
⠳ | Ю | ||
⠫ | Я | ||
⠲ | Точка | ||
⠂ | Запятая | ||
⠖ | Восклицательный знак | ||
⠢ | Вопросительный знак | ||
⠆ | Точка с запятой | ||
⠤ | Дефис | ||
Пробел |
Рис. 22.6. Шрифт Брайля
Шрифт Брайля, в последнее время, стал широко применяться в общественной жизни и быту в связи с ростом внимания к людям с ограниченными возможностями.
Рис. 22.7. Надпись "Sochi 2014" шрифтом Брайля на золотой медали Параолимпийских игр 2014г.
Штрихкод - графическая информация, наносимая на поверхность, маркировку или упаковку изделий, представляющая собой последовательность черных и белых полос либо других геометрических фигур в целях ее считывания техническими средствами.
В 1948 г. Бернард Сильвер (Bernard Silver), аспирант Института Технологии Университета Дрекселя в Филадельфии, услышал, как президент местной продовольственной сети просил одного из деканов разработать систему, автоматически считывающую информацию о продукте при его контроле. Сильвер рассказал об этом друзьям - Норману Джозефу Вудланду (Norman Joseph Woodland) и Джордину Джохэнсону (Jordin Johanson). Втроем они начали исследовать различные системы маркировки. Их первая работающая система использовала ультрафиолетовые чернила, но они были довольно дороги, а кроме того, со временем выцветали.
Убежденный в том, что система реализуема, Вудланд покинул Филадельфию и перебрался во Флориду в квартиру своего отца для продолжения работы. 20 октября 1949 г. Вудланд и Сильвер подали заявку на изобретение, которая была удовлетворена 7 октября 1952 г. Вместо привычных нам линий патент содержал описание штрихкодовой системы в виде концентрических кругов.
Рис. 22.8. Патент системы Вудланда и Сильвера с концентрическими кругами, предшественниками современных штрихкодов
Впервые штрихкоды начали официально использоваться в 1974 г. в магазинах г. Трой, штат Огайо . Системы штрихового кодирования нашли широкое применение в общественной жизни: торговля, почтовые отправления, финансовые и судебные уведомления, учет единиц хранения, идентификация личностей, контактная информация (веб-ссылки, адреса электронной почты, телефонные номера) и т.д.
Различают линейные (читаемые в одном направлении) и двумерные штрихкоды. Каждая из разновидностей различается как размерами графического изображения, так и объемами представленной информации. В следующей таблице приведены примеры некоторых разновидностей штрихкода.
Таблица 22.1. Разновидности штрихкодов
Наименование | Пример штрих-кода | Примечания |
Линейные | ||
Universal Product Code, UPC (универсальный код товара) |
(UPC-A) |
Американский стандарт штрихкода, предназначенный для кодирования идентификатора товара и производителя. Имеются разновидности: - UPC-E – кодируются 8 цифр; - UPC-A – кодируется 13 цифр. |
European Article Number, EAN (европейский номер товара) |
(EAN-13) |
Европейский стандарт штрихкода, предназначенный для кодирования идентификатора товара и производителя. Имеются разновидности: - EAN-8 – кодируются 8 цифр; - EAN 13 – кодируется 13 цифр; - EAN-128 – кодируется любое количество букв и цифр, объединенных в регламентированные группы. ГОСТ ИСО/МЭК 15420-2001 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики EAN/UPC (ЕАН/ЮПиСи)». |
Code 128 (Код 128) |
Включает в себя 107 символов. Из которых 103 символа данных, 3 стартовых, и 1 остановочный символ. Для кодирования всех 128-ми символов ASCII предусмотрено три комплекта символов - A, B и C, которые могут использоваться внутри одного штрихкода. EAN-128 кодирует информацию по алфавиту Code 128 ГОСТ 30743-2001 (ИСО/МЭК 15417-2000) «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Code 128 (Код 128)». |
|
Двумерные | ||
DataMatrix (матричные данные) |
Максимальное количество символов, которые помещаются в один код - 2048 байт. ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix». |
|
QR-код (англ. quick response - быстрый отклик) |
Квадраты в углах изображения позволяют нормализовать размер изображения и его ориентацию, а также угол, под которым сенсор относится к поверхности изображения. Точки переводятся в двоичные числа с проверкой контрольной суммы. Максимальное количество символов, которые помещаются в один QR-код: - цифры - 7089; - цифры и буквы (латиница) - 4296; - двоичный код - 2953 байт; - иероглифы - 1817. |
|
MaxiCode (максикод) |
Размер - дюйм на дюйм (1 дюйм = 2.54 см). Используется для грузоотправительных и грузоприемных систем. ГОСТ Р 51294.6-2000 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики MaxiCode (Максикод)». |
|
PDF147 (англ. Portable Data File - переносимый файл данных) |
Применяется при идентификации личности, учете товаров, при сдаче отчетности в контролирующие органы и других областях. Поддерживает кодирование до 2710 символов и может содержать до 90 строк. |
|
Microsoft Tag (метка Microsoft) |
Разработан для распознавания при помощи фотокамер, встроенных в мобильные телефоны. Может вместить в себя столько же символов, что Code128. Предназначен для быстрой идентификации и получения на устройство заранее подготовленной информации (веб-ссылки, произвольного текста длиной до 1000 символов, телефонного номера и т.п.), привязанной к коду и хранящейся на сервере компании Microsoft. Содержит 13 байт плюс один дополнительный бит для контроля четности. |
Представление чисел в двоичном виде (в компьютере) . Как известно, информация, хранящаяся и обрабатываемая в компьютерах, представлена в двоичном виде. Бит (англ. bi nary digit - двоичное число; также игра слов: англ. bit - кусочек, частица) - единица измерения количества информации, равная одному разряду в двоичной системе счисления. С помощью бита можно закодировать (представить, различать) два состояния (0 или 1; да или нет). Увеличивая количество битов (разрядов), можно увеличить количество кодируемых состояний. Например, для байта (англ. byte), состоящего из 8 битов, количество кодируемых состояний составляет 2 8 = 256.
Числа кодируются в т.н. форматах с фиксированной и плавающей запятой.
1. Формат с фиксированной запятой , в основном, применяется для целых чисел, но может применяться и для вещественных чисел, у которых фиксировано количество десятичных знаков после запятой. Для целых чисел подразумевается, что «запятая» находится справа после младшего бита (разряда), т.е. вне разрядной сетки. В данном формате существуют два представления: беззнаковое (для неотрицательных чисел) и со знаком.
Для беззнакового представления все разряды отводятся под представление самого числа. Например, с помощью байта можно представить беззнаковые целые числа от 0 10 до 255 10 (00000000 2 - 11111111 2) или вещественные числа с одним десятичным знаком от 0.0 10 до 25.5 10 (00000000 2 - 11111111 2). Для знакового представления, т.е. положительных и отрицательных чисел, старший разряд отводится под знак (0 – положительное число, 1 – отрицательное).
Различают прямой, обратный и дополнительный коды записи знаковых чисел.
В прямом коде запись положительного и отрицательного числа выполняется так же, как и в беззнаковом представление (за исключение того, что старший разряд отводится под знак). Таким образом, числа 5 10 и -5 10 записываются, как 00000101 2 и 10000101 2 . В прямом коде имеются два кода числа 0: «положительный нуль» 00000000 2 и «отрицательный нуль» 10000000 2 .
При использовании обратного кода отрицательное число записывается в виде инвертированного положительного числа (0 меняются на 1 и наоборот). Например, числа 5 10 и -5 10 записываются, как 00000101 2 и 11111010 2 . Следует отметить, что в обратном коде, как и в прямом, имеются «положительный нуль» 00000000 2 и «отрицательный нуль» 11111111 2 . Применение обратного кода позволяет вычесть одно число из другого, используя операцию сложения, т.е. вычитание двух чисел X – Y заменяется их суммой X + (-Y). При этом используются два дополнительных правила:
Вычитаемое число инвертируется (представляется в виде обратного кода);
Если количество разрядов результата получается больше, чем отведено на представление чисел, то крайний левый разряд (старший) отбрасывается, а к результату добавляется 1 2 .
В следующей таблице приведены примеры вычитания.
Таблица 22.2. Примеры вычитания двух чисел с использованием обратного кода
X – Y | 5 – 5 | 6 – 5 | 5 – 6 | 5 – (-6) |
X 2 | 00000101 | 00000110 | 00000101 | 00000101 |
Y 2 | 00000101 | 00000101 | 00000110 | 11111001 |
Замена сложением | 5 + (-5) | 6 + (-5) | 5 + (-6) | 5 + 6 |
Обратный код для вычитаемого (-Y 2) | 11111010 | 11111010 | 11111001 | 00000110 |
Сложение | 00000101 + 11111010 11111111 |
00000110 + 11111010 100000000 |
00000101 + 11111001 11111110 |
00000101 + 00000110 00001011 |
не требуется | 00000000 + 00000001 00000001 |
не требуется | не требуется | |
Результат | -0 | 1 | -1 | 11 |
Несмотря на то, что обратный код значительно упрощает вычислительные процедуры, а соответственно и быстродействие компьютеров, наличие двух «нулей» и другие условности привели к появлению дополнительного кода. При представлении отрицательного числа его модуль вначале инвертируется, как в обратном коде, а затем к инверсии сразу добавляется 1 2 .
В следующей таблице приведены некоторые числа в различном кодовом представлении.
Таблица 22.3. Представление чисел в различных кодах
Десятичное представление |
Код двоичного представления (8 бит) | ||
прямой | обратный | дополнительный | |
127 | 01111111 | 01111111 | 01111111 |
6 | 00000110 | 00000110 | 00000110 |
5 | 00000101 | 00000101 | 00000101 |
1 | 00000001 | 00000001 | 00000001 |
0 | 00000000 | 00000000 | 00000000 |
-0 | 10000000 | 11111111 | --- |
-1 | 10000001 | 11111110 | 11111111 |
-5 | 10000101 | 11111010 | 11111011 |
-6 | 10000110 | 11111001 | 11111010 |
-127 | 11111111 | 10000000 | 10000001 |
-128 | --- | --- | 10000000 |
При представлении отрицательных чисел в дополнительных кодах второе правило несколько упрощается - если количество разрядов результата получается больше, чем отведено на представление чисел, то только отбрасывается крайний левый разряд (старший).
Таблица 22.4. Примеры вычитания двух чисел с использованием дополнительного кода
X – Y | 5 – 5 | 6 – 5 | 5 – 6 | 5 – (-6) |
X 2 | 00000101 | 00000110 | 00000101 | 00000101 |
Y 2 | 00000101 | 00000101 | 00000110 | 11111010 |
Замена сложением | 5 + (-5) | 6 + (-5) | 5 + (-6) | 5 + 6 |
Дополнительный код для вычитаемого (-Y 2) | 11111011 | 11111011 | 11111010 | 00000110 |
Сложение | 00000101 + 11111011 00000000 |
00000110 + 11111011 100000001 |
00000101 + 11111010 11111111 |
00000101 + 00000110 00001011 |
Отбрасывание старшего разряда и добавление 1 2 | не требуется | 00000001 | не требуется | не требуется |
Результат | -0 | 1 | -1 | 11 |
Можно возразить, что представление чисел в дополнительных кодах требует на одну операцию больше (после инверсии всегда требуется сложение с 1 2), что может и не потребоваться в дальнейшем, как в примерах с обратными кодами. В данном случае срабатывает известный «принцип чайника». Лучше сделать процедуру линейной, чем применять в ней правила «Если A то B» (даже если оно одно). То, что с человеческой точки зрения кажется увеличением трудозатрат (вычислительной и временной сложности), с точки зрения программно-технической реализации может оказаться эффективней.
Еще одно из преимуществ дополнительного кода перед обратным заключается в возможности представления в единице информации на одно число (состояние) больше, за счет исключения «отрицательного нуля». Поэтому, как правило, диапазон представления (хранения) для знаковых целых чисел длиной один байт составляет от +127 до -128.
2. Формат с плавающей запятой , в основном, используется для вещественных чисел. Число в данном формате представляется в экспоненциальном виде
X = e n * m, (22.1)
где e - основание показательной функции;
n - порядок основания;
e n - характеристика числа;
m - мантисса (лат. mantissa - прибавка) – множитель, на который надо умножить характеристику числа, чтобы получить само число.
Например, число десятичное число 350 может быть записано, как 3.5 * 10 2 , 35 * 10 1 , 350 * 10 0 и т.д. В нормализованной научной записи , порядок n выбирается такой, чтобы абсолютная величина m оставалась не меньше единицы, но строго меньше десяти (1 ≤ |m| < 10). Таким образом, в нормализованной научной записи число 350 выглядит, как 3.5 * 10 2 . При отображении чисел в программах, учитывая, что основание равно 10, их записывают в виде m E ± n , где Е означает «*10^» («…умножить на десять в степени…»). Например, число 350 – 3.5Е+2, а число 0.035 – 3.5Е-2.
Так как числа хранится и обрабатывается в компьютерах в двоичном виде, то для этих целей принимается e = 2. Одной из возможных форм двоичного представления чисел с плавающей запятой является следующая.
Рис. 22.9. Двоичный формат представления чисел с плавающей запятой
Биты bn± и bm±, означающие знак порядка и мантиссы, кодируются аналогично числам с фиксированной запятой: для положительных чисел «0», для отрицательных – «1». Значение порядка выбирается таким образом, чтобы величина целой части мантиссы в десятичном (и соответственно в двоичном) представлении равнялась «1», что будет соответствовать нормализованной записи для двоичных чисел. Например, для числа 350 10 порядок n = 8 10 = 001000 2 (350 = 1.3671875 * 2 8), а для 576 10 – n = 9 10 = 001001 2 (576 = 1.125 * 2 9). Битовое представление величины порядка может быть выполнено в прямом, обратном или дополнительном коде (например, для n = 8 10 бинарный вид 001000 2). Величина мантиссы отображает дробную часть. Для ее преобразования в двоичный вид, она последовательно умножается на 2, пока не станет равной 0. Например,
Рис. 22.10. Пример получения дробной части в бинарном виде
Целые части, получаемые в результате последовательного перемножения, и представляют собой двоичный вид дробной части (0.3671875 10 = 0101111 2). Оставшаяся часть разрядов величины мантиссы заполняется 0. Таким образом, итоговый вид числа 350 в формате с плавающей запятой с учетом представления мантиссы в нормализованной записи
Рис. 22.11. Двоичный вид числа 350
В программно-аппаратных реализациях арифметических действий широко распространен стандарт представления чисел с плавающей точкой IEEE 2 754 (последняя редакция «754-2008 - IEEE Standard for Floating-Point Arithmetic»). Данный стандарт определяет форматы с плавающими запятыми для представления чисел одинарной (англ. single, float) и двойной (англ. double) точности. Общая структура форматов
Рис. 22.12. Общий формат представления двоичных чисел в стандарте IEEE 754
Форматы представления отличаются количеством бит (байт), отводимым для представления чисел, и, соответственно, точностью представления самих чисел.
Таблица 22.5. Характеристики форматов представления двоичных чисел в стандарте IEEE 754
Формат | single | double |
Общий размер, бит (байт) | 32 (4) | 64 (8) |
Число бит для порядка | 8 | 11 |
Число бит для мантиссы (без учета знакового бита) |
23 | 52 |
Величина порядка | 2 128 .. 2 -127 (±3.4 * 10 38 .. 1.7 * 10 -38) |
2 1024 .. 2 -1023 (±1.8 * 10 308 .. 9.0 * 10 -307) |
Смещение порядка | 127 | 1023 |
Диапазон представления чисел (без учета знака) |
±1.4 * 10 -45 .. 3.4 * 10 38 | ±4.9 * 10 -324 .. 1.8 * 10 308 |
Количество значащих цифр числа (не более) |
8 | 16 |
Особенностью представления чисел по стандарту IEEE является отсутствие бита под знак порядка. Несмотря на это, величина порядка может принимать как положительные значения, так и отрицательные. Этот момент учитывается т.н. «смещением порядка». После преобразования двоичного вида порядка (записанного в прямом коде) в десятичный от полученной величины отнимается «смещение порядка». В результате получается «истинное» значения порядка числа. Например, если для числа одинарной точности указан порядок 11111111 2 (= 255 10), то величина порядка на самом деле 128 10 (= 255 10 - 127 10), а если 00000000 2 (= 0 10), то -127 10 (= 0 10 - 127 10).
Величина мантиссы указывается, как и в предыдущем случае, в нормализованном виде.
C учетом вышеизложенного, число 350 10 в формате одинарной точности стандарта IEEE 754 записывается следующим образом.
Рис. 22.13. Двоичный вид числа 350 по стандарту IEEE
К другим особенностям стандарта IEEE относится возможность представления специальных чисел. К ним относятся значения NaN (англ. Not a Number - не число) и +/-INF (англ. Infinity - бесконечность), получающихся в результате операций типа деления на ноль. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы.
В заключение по числам с плавающей запятой несколько слов о пресловутой «ошибке округления ». Т.к. в двоичной форме представления числа хранится только несколько значащих цифр, она не может «покрыть» все многообразие вещественных чисел в заданном диапазоне. В результате, если число невозможно точно представить в двоичной форме, оно представляется ближайшим возможным. Например, если к числу типа double «0.0» последовательно добавлять «1.7», то можно обнаружить следующую «картину» изменения значений.
0.0
1.7
3.4
5.1
6.8
8.5
10.2
11.899999999999999
13.599999999999998
15.299999999999997
16.999999999999996
18.699999999999996
20.399999999999995
22.099999999999994
23.799999999999994
25.499999999999993
27.199999999999992
28.89999999999999
30.59999999999999
32.29999999999999
33.99999999999999
35.699999999999996
37.4
39.1
40.800000000000004
42.50000000000001
44.20000000000001
45.90000000000001
47.600000000000016
…
Рис. 22.14. Результат последовательного добавления числа 1.7 (Java 7)
Другой нюанс обнаруживается при сложении двух чисел, у которых значительно отличается порядок. Например, результатом сложения 10 10 + 10 -10 будет 10 10 . Даже если последовательно триллион (10 12) раз добавлять 10 -10 к 10 10 , то результат останется прежним 10 10 . Если же к 10 10 добавить произведение 10 -10 * 10 12 , что с математической точки зрения одно и то же, результат станет 10000000100 (1.0000000100 * 10 10).
Генетический код - свойственная всем живым организмам кодированная аминокислотная последовательность белков. Кодирование выполняется при помощи нуклеотидов 3 , входящих в состав ДНК (дезоксирибонуклеиновой кислоты). ДКН - макромолекула, обеспечивающая хранение, передачу из поколения в поколение и реализацию генетической программы развития и функционирования живых организмов. Пожалуй, самый главный код в истории человечества.
В ДНК используется четыре азотистых основания - аденин (А), гуанин (G), цитозин (С), тимин (T), которые в русскоязычной литературе обозначаются буквами А, Г, Ц и Т. Эти буквы составляют алфавит генетического кода. В молекулах ДНК нуклеотиды выстраиваются в цепочки и, таким образом, получаются последовательности генетических букв.
Белки практически всех живых организмов построены из аминокислот всего 20 видов. Эти аминокислоты называют каноническими. Каждый белок представляет собой цепочку или несколько цепочек аминокислот, соединенных в строго определенной последовательности. Эта последовательность определяет строение белка, а, следовательно, все его биологические свойства. Синтез белков (т.е. реализация генетической информации в живых клетках) осуществляется на основе информации, заложенной в ДНК. Для кодирования каждой из 20 аминокислот, а также сигнала «стоп», означающего конец белковой последовательности, достаточно трех последовательных нуклеотидов (триплета).
Рис. 22.15. Фрагмент ДНК
2 IEEE (англ. Institute of Electrical and Electronics Engineers) - институт инженеров по электротехнике и электронике.
3 Содержит азотистое основание, соединенное с сахаром, и фосфорную кислоту.
22.3. Секретные кодовые системы
Секретные коды, как и шифры, предназначены для обеспечения конфиденциальности информации. Изначально секретные кодовые системы представляли собой систему, в основе которой лежало подобие жаргонного кода. Они возникли в целях сокрытия имен реальных людей, упоминавшихся в переписке. Это были небольшие списки, в которых в были записаны скрываемые имена, а напротив них - кодовые замены (подстановки). Официальные коды для сокрытия содержания донесений, которыми пользовались папские эмиссары и послы средиземноморских городов-государств, найденные в ранних архивах Ватикана, датируются XIV в. По мере возрастания потребности в безопасности переписки, у представителей городов-государств появились более обширные перечни, которые включали в себя не только кодовые замены имен людей, но и стран, городов, видов оружия, провианта и т.д. В целях повышения защищенности информации к перечням были добавлены шифралфавиты для кодирования слов, не вошедших в перечень, а также правила их использования, базирующиеся на различных стеганографических и криптографических методах. Такие сборники получили название «номенклаторы ». С XV и до середины XIX в. они были основной формой обеспечения конфиденциальности информации .
Вплоть до XVII столетия в номенклаторах слова открытого текста и их кодовые замены шли в алфавитном порядке, пока французский криптолог Антуан Россиньоль не предложил использовать более стойкие номенклаторы, состоящие из двух частей. В них существовало два раздела: в одном перечислялись в алфавитном порядке элементы открытого текста, а кодовые элементы были перемешаны. Во второй части в алфавитном порядке шли перечни кодов, а перемешанными были уже элементы открытого текста.
Изобретение телеграфа и азбуки Морзе, а также прокладка трансатлантического кабеля в середине XIX в. значительно расширило сферы применения секретных кодов. Помимо традиционных областей их использования (в дипломатической переписке и в военных целях) они стали широко использоваться в коммерции и на транспорте. Секретные кодовые системы того времени в своем названии содержали слово «код » («Код Госдепартамента (1867 г.)», «Американский код для окопов», «Речные коды: Потомак», «Черный код») или «шифр » («Шифр Госдепартамента (1876 г.)», «Зеленый шифр»). Следует отметить, что, несмотря на наличие в названии слова «шифр», в основу этих систем было положено кодирование.
Рис. 22.16. Фрагмент «Шифра Госдепартамента (1899 г.)»
Разработчики кодов, как и составители шифров, нередко добавляли дополнительные степени защиты, чтобы затруднить взлом своих кодов. Такой процесс называется перешифрованием . В итоге секретные кодовые системы сочетали в себе, как стеганографические, так и криптографические способы обеспечения конфиденциальности информации. Наиболее популярные из них приведены в следующей таблице.
Таблица 22.6. Способы обеспечения конфиденциальности информации в секретных кодовых системах
Способ | Тип | Примечания | Примеры (кодируемое слово – кодовое обозначение) |
Замена слова (словосочетания) другим словом произвольной длины | стеганографический | Аналог - . |
1. Номенклатор города Сиены (XV в.): Cardinales (кардинал) – Florenus; Antonello da Furli (Антолло да Фурли) – Forte. 2. Шифр Госдепартамента 1899 г.: Russia (Россия) – Promotes; Cabinet of Russia (Правительство России) – Promptings. 3. Код руководителя службы связи (1871 г.): 10:30 – Anna, Ida; 13th (тринадцатый) – Charles, Mason. |
Замена слова (словосочетания) символьной строкой фиксированной длины | стеганографический | Аналог - . | 1. Американский код для окопов (1918 г.): Patrol (патруль) – RAL; Attack (атака) – DIT. 2. Код Госдепартамента А-1 (1919 г.): Diplomat (дипломат) – BUJOH; Diplomatic corps (дипломатический корпус) – BEDAC. |
Замена слова (словосочетания) числом | стеганографический | Аналог - . Для одного кодируемого слова могли использоваться несколько кодовых обозначений. |
1. Номенклатор Бенджамина Толмаджа (1779 г.): Defense (оборона) – 143; Attack (атака) – 38. 2. Код вещания для торговых судов союзников во Второй мировой войне (BAMS): остров – 36979; порт – 985. |
Замена слова (словосочетания) набором цифр фиксированной длины | стеганографический | Аналог - . | 1. Американский код для окопов (1918 г.): Patrol (патруль) – 2307; Attack (атака) – 1447. 2. Американский служебный радиокод № 1 (1918 г.): Oil (масло) – 001; Bad (плохой) – 642. |
Замена букв | криптографический | Аналоги – шифр , . В качестве кодового обозначения могли использоваться буквы, числа, графические обозначения. Применялась для слов, отсутствующих в списке кодируемых. |
1. Номенклатор города Сиены (XV в.): q – ; s – . 2. Номенклатор Джеймса Мэдисона (1781 г.): o – 527; p – 941. 3. Американский код для окопов (1918 г.): a – 1332 .. 2795 или CEW .. ZYR. Содержал также 30 алфавитов шифрозамен для перешифрования кодовых обозначений. |
Замена сочетания букв | криптографический | Аналог – . В качестве кодового обозначения могли использоваться буквы, числа, графические обозначения. |
1. Номенклатор города Сиены (XV в.): bb – ; tt – . 2. Номенклатор X-Y-Z (1737 г.): ce – 493; ab – 1194. |
Использование пустых знаков | стеганографический | Аналог – . Ничего назначавшие (лат. nihil importantes) символы использовались для запутывания криптоаналитиков. |
1. Номенклатор города Сиены (XV в.): , . 2. Речные коды: Потомак (1918 г.): ASY. |
Использование аддитивных чисел | криптографический | Аналог – . Аддитивное число, добавляемое к числовому кодовому обозначению, служило в качестве переменной части кода (ключа). |
Шифр Госдепартамента 1876 г.: правило «Horse» (лошадь) в начале сообщения означало, что при кодировании последующих кодовых обозначений использовалось аддитивное число 203; «Hawk» (ястреб) - 100. |
Перестановка букв (цифр) в кодовых обозначениях | криптографический | Аналог – . | Телеграфный код для обеспечения секретности при передаче телеграмм (1870 г.): одно из правил предписывало перестановку последних трех цифр в цифровом кодовом обозначении, состоящем из пяти цифр. |
Перестановка кодовых обозначений | криптографический | Аналог – . | Шифр Госдепартамента 1876 г.: правило «Tiger» (тигр) в начале сообщения означало, что раскодированное сообщение надо читать с последнего слова по первое (задом-наперед); «Tapir» (тапир) – меняя местами каждую пару слов (т.е. первое и второе, третье и четвертое и т.д.). |
Сочетание различных способов кодирования и перешифровки в кодовой системе было обычной практикой у разработчиков кодов и стало применяться практически с самого начала их появления. Так, еще в номенклаторе, использовавшемся в г. Сиена в XV в., помимо кодовых замен слов, применялись для замены букв, их и пустых знаков. Наибольшего расцвета эта практика получила в конце XIX – начале XX вв. В частности в «Шифре Госдепартамента 1876 г.» (англ. Red Book – Красная книга), состоящем из 1200 страниц, и его дополнении «Неподдающийся декодированию код: дополнение к шифру Госдепартамента» применялись:
Кодовые обозначения в виде слов и чисел;
Кодирование
― процесс представления информации в виде кода, т.е. набора условных обозначений для представления информации.
Человек выражает свои мысли в виде предложений, составленных из слов. Они являются алфавитным представлением информации. Основу любого языка составляет алфавит - конечный набор различных знаков (символов) любой природы, из которых складывается сообщение.
Кодирование сводиться к использованию совокупности символов по строго определенным правилам и имеет два основных значения:
■
Способ изложения информации в виде, приемлемом и понимаемым объектом (например ЭВМ),
■
Способ защиты информации от нежелаемого доступа или распространения.
Возможно объединение этих функций, ввиду универсальности удобства, и/или же, ввиду естественных особенностей местоположения группы людей (язык определенного народа).
История возникновения
Согласно данным, раздобытым и приведенным Дэвидом Каном в своей книге "The Codebreackers" ("Раскодировщики"), которая была написана им еще в 1967 г., но служит и по сей день наиболее богатым источником информации по криптографии, первыми известными "шифрователями" данных на планете были египтяне, еще в 1900 г. до н. э. приступившие к исписыванию стен своих жилищ странными иероглифами. Их последователями стали месопотамцы, чьи глиняные тарелки украшали своеобразные картинки, заключающие в себе какой-то определенный смысл. Искусству их оформления они стали обучаться примерно в 1500 г. до н. э. Спустя тысячу лет жители иудейского царства изобрели для написания книг своеобразный простейший шифр, ATBASH, принцип записи которого основывался на алфавите, только в обратном порядке. На этом "языке" древние евреи писали некоторые книги. А позже ими было изобретено еще несколько способов кодирования записанной информации.
В 487 г. до н. э. греки по некоторым данным создали первое "устройство" для шифрования данных (принцип его действия до сих пор не раскрыт), представляющее из себя нечто неопределенное, на что наматывали тонкую кожаную ленту. Затем исписанную полоску материала снимали с, условно говоря, "барабана" и одевали на себя, как пояс. Предполагают, что получатель закодированного "сообщения", носил "дешифратор" все время с собой, и мог прочесть текст послания где угодно. Но подлинность именно этой истории в 1998 г. была оспорена, и теперь многие полагают, что это всего лишь миф.
Следующим поклонником зарождающейся криптографии стал Юлий Цезарь (100-44 гг. до н.э.). Примерно в пятидесятом году до нашей эры он освоил способ кодирования важных документов путем замены некоторых букв нормального алфавита и применял его для тайной правительственной переписки. Шифр Цезаря был проще ATBASH, но, принимая во внимание то, что большинство людей в то время были неграмотными и читать - то толком не умели, для передачи ценных данных пришелся в самый раз. Помимо подстановки "собственных" букв алфавита некоторые отдельные слова Цезарь писал на латинском, а некоторые - на греческом, чтобы окончательно сбить с толку любопытных злоумышленников.
Где-то в 200 г. уже н. э. по данным опять же Кана шифр применяли для записи на каком-то "Ляйденском папирусе" "волшебных" рецептов. В середине 70-х гг. в свет вышла первая книга о криптографии, написанная, судя по длине имени ее автора, арабом, воодушевленным тем решением, которое пришло ему в голову при создании системы кодирования греческих слов для византийского императора. А в 855 г. н. э. его коллега представил сразу несколько новых алфавитов, из знаков которых в последствии составляли свои записи всякие колдуны и колдуньи.
Многие послания Венецианского правительства в 1226 г. были зашифрованы довольно оригинальным образом - гласные буквы многих слов заменялись точками и крестиками. Как их получателям удавалось прочесть написанное - неясным осталось до сих пор. Но то, что речь опять идет о криптографии - очевидно.
1412-м г. датируют четырнадцати томную энциклопедию на арабском языке, один из довольно внушительных разделов которой был посвящен криптографии и криптологии. В нем приводились данные о принципе кодирования и раскодирования текстовых сообщений, а также описывались первые информационные "таблицы-ключи" с разъяснениями, как правильно трактовать написанное. Уже тогда предусматривались случаи, при которых одна и та же буква в слове употреблялась дважды и более. С целью запутывания возможного похитителя зашифрованного письма, знаки, ее заменяющие, каждый раз использовались разные.
В 18-м г. шестнадцатого столетия Йоханнес Тритемиус опубликовал первое печатное издание по криптологии. Он изобрел метод замены каждого слова одной буквой, взятой из последовательности столбцов. Кроме того, он продемонстрировал идею представления лишь одного знака вместо сразу всех букв алфавита.
В последующие годы и века криптографы разных стран совершенствовали свое мастерство, периодически удивляя окружающих новыми шифрами и способами кодирования целых сочинений. Лишь в 1917 г. произошло событие, возможно, действительно заслуживающее внимания. В Америке появился первый криптоаналитик. Им стал Вильям Фредерик Фридман, "отец американского криптоанализа". Сначала вместе с женой Фридман работал в специальной лаборатории при правительстве США, а спустя некоторое время открыл свою школу в Ривербэнке. В функции первого криптоаналитика входило изучение различных вариантов кодирования информации на предмет их взлома. Известно, что системы иногда оказывались не совершенными, и задачей Вильяма ставилось определение этих самых недостатков.
В том же 1917 г. Гилберт С. Вернам, сотрудник компании AT&T, представил первый реально действующий и максимально "безопасный" аппарат для кодирования данных. Данные ключа (таблицы последовательно записанных инструкций по расшифровке) брались произвольно и никогда более не использовались. Ключ представлял собой одноразовую кассету с пленкой. Устройство собирались использовать во времена Первой Мировой Войны, однако широкое применение "машинка" получила лишь в двадцатые годы.
Кодирование используется для представление информации в компьютере.
Компьютер может обрабатывать только информацию, представленную в числовой форме. Вся другая информация (например, звуки, изображения, показания приборов и т.д.) для обработки на компьютере должна быть преобразована в числовую форму. Например, чтобы перевести в числовую форму музыкальный звук, можно через небольшие промежутки времени измерять интенсивность звука на определенных частотах, представляя результаты каждого измерения в числовой форме. С помощью программ для компьютера можно выполнить преобразования полученной информации, например "наложить" друг на друга звуки от разных источников. Аналогичным образом на компьютере можно обрабатывать текстовую информацию. При вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов.
Как правило, все числа в компьютере представляются с помощью нулей и единиц. Т.е., компьютеры обычно работают в двоичной системе счисления, поскольку при этом устройства для их обработки получаются значительно более простыми. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться в привычной десятичной форме, а все необходимые преобразования выполняют программы, работающие на компьютере.
Системой счисления называется совокупность приемов наименования и записи чисел.
В любой системе счисления для представления чисел выбираются некоторые символы (их называют цифрами), а остальные числа получаются в результате каких-либо операций над цифрами данной системы счисления.
Арифметические действия над числами в любой позиционной системе счисления производятся по тем же правилам, что и десятичной системе, так как все они основываются на правилах выполнения действий над соответствующими многочленами. При этом нужно только пользоваться теми таблицами сложения и умножения, которые соответствуют данному основанию P системы счисления.
1. При переводе чисел из десятичной системы счисления в систему с основанием P > 1 обычно используют следующий алгоритм:
если переводится целая часть числа, то она делится на P, после чего запоминается остаток от деления. Полученное частное вновь делится на P, остаток запоминается. Процедура продолжается до тех пор, пока частное не станет равным нулю. Остатки от деления на P выписываются в порядке, обратном их получению;
если переводится дробная часть числа, то она умножается на P, после чего целая часть запоминается и отбрасывается. Вновь полученная дробная часть умножается на P и т.д. Процедура продолжается до тех пор, пока дробная часть не станет равной нулю. Целые части выписываются после двоичной запятой в порядке их получения. Результатом может быть либо конечная, либо периодическая двоичная дробь. Поэтому, когда дробь является периодической, приходится обрывать умножение на каком-либо шаге и довольствоваться приближенной записью исходного числа в системе с основанием P.
, .
2. При переводе чисел из системы счисления с основанием P в десятичную систему счисления необходимо пронумеровать разряды целой части справа налево, начиная с нулевого, и в дробной части, начиная с разряда сразу после запятой слева направо (начальный номер -1). Затем вычислить сумму произведений соответствующих значений разрядов на основание системы счисления в степени, равной номеру разряда. Это и есть представление исходного числа в десятичной системе счисления.
По мере развития техники появлялись разные способы кодирования информации. Во второй половине XIX в. американский изобретатель Сэмюэль Морзе изобрел код, применяющийся до настоящего времени. Информация кодируется тремя символами: длинный сигнал (тире), короткий сигнал (точка), нет сигнала (пауза) - для разделения букв.
В вычислительной технике существует своя система - она называется двоичным кодированием и основана на представлении данных последовательностью всего двух знаков: 0 и 1. Эти знаки называются двоичными цифрами, по-английски - binary digit или сокращенно bit (бит).
Одним битом могут быть выражены два понятия: 0 или 1 (да или нет, черное или белое, истина или ложь и т.п.). Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия: 00 01 10 11. Тремя - соответственно восемь.
Увеличивая на единицу количество разрядов в системе двоичного кодирования, увеличивается в два раза количество значений, которое может быть выражено в данной системе, по формуле N=2 в степени m, где N - количество независимых кодируемых значений, m - разрядность двоичного кодирования.
Кодирование данных двоичным кодом.
Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел.
Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел.
Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо перевести число N в двоичную систему счисления, а полученный результат дополнить слева незначащими нулями до k разрядов.
Наример, чтобы получить внутреннее представление целого числа 1607 в 2-х байтовой ячейке,нужно перевести число в двоичную систему: 160710 = 11001000111(2). Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111.
Для записи внутреннего представления целого отрицательного числа (-N) необходимо получить внутреннее представление положительного числа N, получить обратный код этого числа заменой 0 на 1 и 1 на 0 и к полученному числу прибавить 1.
Кодирование вещественного числа по Формату с плавающей точкой использует иные алгоритмы.
Кодирование текста.
Множество символов, используемых при записи текста, называется алфавитом. Количество символов в алфавите называется его мощностью.
Для представления текстовой информации в компьютере чаще всего используется алфавит мощностью 256 символов. Один символ из такого алфавита несет 8 бит информации, т. к. 28 = 256. Двоичный код каждого символа(8 бит) занимает 1 байт памяти ЭВМ.
Все символы такого алфавита пронумерованы от 0 до 255, а каждому номеру соответствует 8-разрядный двоичный код от 00000000 до 11111111. Этот код является порядковым номером символа в двоичной системе счисления.
Для разных типов ЭВМ и операционных систем используются различные таблицы кодировки, отличающиеся порядком размещения символов алфавита в кодовой таблице. Международным стандартом на персональных компьютерах является уже упоминавшаяся таблица кодировки ASCII.
Принцип последовательного кодирования алфавита заключается в том, что в кодовой таблице ASCII латинские буквы (прописные и строчные) располагаются в алфавитном порядке. Расположение цифр также упорядочено по возрастанию значений.
Стандартными в этой таблице являются только первые 128 символов, т. е. символы с номерами от нуля (двоичный код 00000000) до 127 (01111111). Сюда входят буквы латинского алфавита, цифры, знаки препинания, скобки и некоторые другие символы. Остальные 128 кодов, начиная со 128 (двоичный код 10000000) и кончая 255 (11111111), используются для кодировки букв национальных алфавитов, символов псевдографики и научных символов.
Кодирование графической информации.
В видеопамяти находится двоичная информация об изображении, выводимом на экран. Почти все создаваемые, обрабатываемые или просматриваемые с помощью компьютера изображения можно разделить на две большие части - растровую и векторную графику.
изображения представляют собой однослойную сетку точек, называемых пикселами (pixel, от англ. picture element). Код пиксела содержит информации о его цвете. Для черно-белого изображения (без полутонов) пиксел может принимать только два значения: белый и черный (светится - не светится), а для его кодирования достаточно одного бита памяти: 1 - белый, 0 - черный.
Пиксел на цветном дисплее может иметь различную окраску, для кодирования 2 в степени n-цветного изображения требуются т бит на пиксел, поскольку они могут принимать 2 в степени n различных состояний. Если иметь возможность управлять интенсивностью (яркостью) свечения базовых цветов, то количество различных вариантов их сочетаний, порождающих разнообразные оттенки, увеличивается. Как пример, может использоваться такой вариант кодировки цветов: 00 - черный, 10 - зеленый, 01 - красный, 11 - коричневый.
На RGB-мониторах разнообразие цветов получается сочетанием базовых цветов - красного (Red), зеленого (Green), синего (Blue), из которых можно получить 8 комбинаций.
- модель. - модель.
Существуют и таблицы цветов, зависящие от количества разрядов.
Векторное изображение ― это графический объект, состоящий из элементарных отрезков и дуг. В противоположность растровой графике векторное изображение многослойно. Каждый элемент векторного изображения - линия, прямоугольник, окружность или фрагмент текста - располагается в своем собственном слое, пикселы которого устанавливаются независимо от других слоев. Каждый элемент векторного изображения является объектом, который описывается с помощью специального языка (математических уравнения линий, дуг, окружностей и т. д.). Сложные объекты (ломаные линии, различные геометрические фигуры) представляются в виде совокупности элементарных графических объектов. Объекты векторного изображения, в отличии от растровой графики, могут изменять свои размеры без потери качества (при увеличении растрового изображения увеличивается зернистость). Базовым элементом изображения является линия. Как и любой объект, она обладает свойствами: формой (прямая, кривая), толщиной., цветом, начертанием (пунктирная, сплошная). Замкнутые линии имеют свойство заполнения (или другими объектами, или выбранным цветом). Все прочие объекты векторной графики составляются из линий.
Также существует фрактальная графика, основываеющаяся на математических вычислениях, как и векторная. Но в отличии от векторной ее базовым элементом является сама математическая формула. Это приводит к тому, что в памяти компьютера не хранится никаких объектов и изображение строится только по уравнениям. При помощи этого способа можно строить простейшие регулярные структуры, а также сложные иллюстрации, которые имитируют ландшафты.
Кодирование звука.
Звук ― это колебания воздуха. Если преобразовать звук в электрический сигнал (например, с помощью микрофона), можно видеть плавно изменяющееся с течением времени напряжение. Для компьютерной обработки такой - аналоговый - сигнал преобразовывается в последовательность двоичных чисел.
Измеряется напряжение через равные промежутки времени и полученные значения записываются в память компьютера. Этот процесс называется дискретизацией (или оцифровкой), а устройство, выполняющее его - аналого-цифровым преобразователем (АЦП).
Для того чтобы воспроизвести закодированный таким образом звук, нужно выполнить обратное преобразование (для него служит цифро-аналоговый преобразователь - ЦАП), а затем сгладить получившийся ступенчатый сигнал.
Чем выше частота дискретизации (т. е. количество отсчетов за секунду) и чем больше разрядов отводится для каждого отсчета, тем точнее будет представлен звук. Но при этом увеличивается и размер звукового файла. Поэтому в зависимости от характера звука, требований, предъявляемых к его качеству и объему занимаемой памяти, выбирают некоторые компромиссные значения. Этот способ кодирования звуковой информации достаточно универсален, позволяет представить любой звук и преобразовывать его различными способами.
Человек издавна использует довольно компактный способ представления музыки - нотную запись. В ней специальными символами указывается, какой высоты звук, на каком инструменте и как сыграть. Ее можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI.
Такая система кодирования не позволяет записывать все звуки, она годится только для инструментальной музыки, но имеет преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.
Существуют и другие, чисто компьютерные, форматы записи музыки. Среди них следует отметить формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку. При этом вместо 18-20 музыкальных композиций на стандартный компакт-диск (CDROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.
Сожержание
I. История кодирования информации………………………………..3
II. Кодирование информации…………………………………………4
III. Кодирование текстовой информации…………………………….4
IV. Виды таблиц кодировок…………………………………………...6
V. Расчет количества текстовой информации………………………14
Список используемой литературы…………………………………..16
I . История кодирования информации
Человечество использует шифрование (кодировку) текста с того самого момента, когда появилась первая секретная информация. Перед вами несколько приёмов кодирования текста, которые были изобретены на различных этапах развития человеческой мысли:
Криптография – это тайнопись, система изменения письма с целью сделать текст непонятным для непосвященных лиц;
Азбука Морзе или неравномерный телеграфный код, в котором каждая буква или знак представлены своей комбинацией коротких элементарных посылок электрического тока (точек) и элементарных посылок утроенной продолжительности (тире);
Сурдожесты – язык жестов, используемый людьми с нарушениями слуха.
Один из самых первых известных методов шифрования носит имя римского императора Юлия Цезаря (I век до н.э.) . Этот метод основан на замене каждой буквы шифруемого текста, на другую, путем смещения в алфавите от исходной буквы на фиксированное количество символов, причем алфавит читается по кругу, то есть после буквы я рассматривается а. Так слово «байт» при смещении на два символа вправо кодируется словом «гвлф». Обратный процесс расшифровки данного слова – необходимо заменять каждую зашифрованную букву, на вторую слева от неё.
II. Кодирование информации
Код – это набор условных обозначений (или сигналов) для записи (или передачи) некоторых заранее определенных понятий.
Кодирование информации – это процесс формирования определенного представления информации. В более узком смысле под термином «кодирование» часто понимают переход от одной формы представления информации к другой, более удобной для хранения, передачи или обработки.
Обычно каждый образ при кодировании (иногда говорят – шифровке) представлении отдельным знаком.
Знак - это элемент конечного множества отличных друг от друга элементов.
В более узком смысле под термином "кодирование" часто понимают переход от одной формы представления информации к другой, более удобной для хранения, передачи или обработки.
На компьютере можно обрабатывать текстовую информацию. При вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов.
Как правило, все числа в компьютере представляются с помощью нулей и единиц (а не десяти цифр, как это привычно для людей). Иными словами, компьютеры обычно работают в двоичной системе счисления, поскольку при этом устройства для их обработки получаются значительно более простыми. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться в привычной десятичной форме, а все необходимые преобразования выполняют программы, работающие на компьютере.
III. Кодирование текстовой информации
Одна и та же информация может быть представлена (закодирована) в нескольких формах. C появлением компьютеров возникла необходимость кодирования всех видов информации, с которыми имеет дело и отдельный человек, и человечество в целом. Но решать задачу кодирования информации человечество начало задолго до появления компьютеров. Грандиозные достижения человечества - письменность и арифметика - есть не что иное, как система кодирования речи и числовой информации. Информация никогда не появляется в чистом виде, она всегда как-то представлена, как-то закодирована.
Двоичное кодирование – один из распространенных способов представления информации. В вычислительных машинах, в роботах и станках с числовым программным управлением, как правило, вся информация, с которой имеет дело устройство, кодируется в виде слов двоичного алфавита.
Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовой информации, и в настоящее время основная доля персональных компьютеров в мире (и большая часть времени) занята обработкой именно текстовой информации. Все эти виды информации в компьютере представлены в двоичном коде, т. е. используется алфавит мощностью два (всего два символа 0 и 1). Связано это с тем, что удобно представлять информацию в виде последовательности электрических импульсов: импульс отсутствует (0), импульс есть (1).
Такое кодирование принято называть двоичным, а сами логические последовательности нулей и единиц - машинным языком.
С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами.
Тексты вводятся в память компьютера с помощью клавиатуры. На клавишах написаны привычные нам буквы, цифры, знаки препинания и другие символы. В оперативную память они попадают в двоичном коде. Это значит, что каждый символ представляется 8-разрядным двоичным кодом.
Традиционно для кодирования одного символа используется количество информации, равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события): К = 2 I = 2 8 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов.
Такое количество символов вполне достаточно для представления текстовой информации, включая прописные и строчные буквы русского и латинского алфавита, цифры, знаки, графические символы и пр.
Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер - по их коду.
Удобство побайтового кодирования символов очевидно, поскольку байт - наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.
В процессе вывода символа на экран компьютера производится обратный процесс - декодирование, то есть преобразование кода символа в его изображение. Важно, что присвоение символу конкретного кода - это вопрос соглашения, которое фиксируется в кодовой таблице.
Теперь возникает вопрос, какой именно восьмиразрядный двоичный код поставить в соответствие каждому символу. Понятно, что это дело условное, можно придумать множество способов кодировки.
Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.
IV . Виды таблиц кодировок
Таблица, в которой всем символам компьютерного алфавита поставлены в соответствие порядковые номера, называется таблицей кодировки.
Для разных типов ЭВМ используются различные таблицы кодировки.
В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange - Американский стандартный код для информационного обмена), кодирующая первую половину символов с числовыми кодами от 0 до 127 (коды от 0 до 32 отведены не символам, а функциональным клавишам).
Таблица кодов ASCII делится на две части.
Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).
Структура таблицы кодировки ASCII
Порядковый номер | Код | Символ |
0 - 31 | 00000000 - 00011111 | Символы с номерами от 0 до 31 принято называть управляющими. Их функция – управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п. |
32 - 127 | 0100000 - 01111111 | Стандартная часть таблицы (английский). Сюда входят строчные и прописные буквы латинского алфавита, десятичные цифры, знаки препинания, всевозможные скобки, коммерческие и другие символы. Символ 32 - пробел, т.е. пустая позиция в тексте. Все остальные отражаются определенными знаками. |
128 - 255 | 10000000 - 11111111 | Альтернативная часть таблицы (русская). Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер. Кодовая страница в первую очередь используется для размещения национальных алфавитов, отличных от латинского. В русских национальных кодировках в этой части таблицы размещаются символы русского алфавита. |
Первая половина таблицы кодов ASCII
Обращается внимание на то, что в таблице кодировки буквы (прописные и строчные) располагаются в алфавитном порядке, а цифры упорядочены по возрастанию значений. Такое соблюдение лексикографического порядка в расположении символов называется принципом последовательного кодирования алфавита.
Для букв русского алфавита также соблюдается принцип последовательного кодирования.
Вторая половина таблицы кодов ASCII
К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.
Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 ("Код обмена информацией, 8-битный"). Эта кодировка применялась еще в 70-ые годы на компьютерах серии ЕС ЭВМ, а с середины 80-х стала использоваться в первых русифицированных версиях операционной системы UNIX.
От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 ("CP" означает "Code Page", "кодовая страница").
Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.
Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.
Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251. Введена компанией Microsoft; с учетом широкого распространения операционных систем (ОС) и других программных продуктов этой компании в Российской Федерации она нашла широкое распространение.
С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode.
Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.
Внутреннее представление слов в памяти компьютера
с помощью таблицы ASCII
Иногда бывает так, что текст, состоящий из букв русского алфавита, полученный с другого компьютера, невозможно прочитать - на экране монитора видна какая-то "абракадабра". Это происходит оттого, что на компьютерах применяется разная кодировка символов русского языка.
Таким образом, каждая кодировка задается своей собственной кодовой таблицей. Как видно из таблицы, одному и тому же двоичному коду в различных кодировках поставлены в соответствие различные символы.
Например, последовательность числовых кодов 221, 194, 204 в кодировке СР1251 образует слово «ЭВМ», тогда как в других кодировках это будет бессмысленный набор символов.
К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов, так как это делают специальные программы-конверторы, встроенные в приложения.
V . Расчет количества текстовой информации
Задача 1: Закодируйте слово “Рим” с помощью таблиц кодировок КОИ8-Р и CP1251.
Решение:
Задача 2: Считая, что каждый символ кодируется одним байтом, оцените информационный объем следующего предложения:
“Мой дядя самых честных правил,
Когда не в шутку занемог,
Он уважать себя заставил
И лучше выдумать не мог.”
Решение: В данной фразе 108 символов, учитывая знаки препинания, кавычки и пробелы. Умножаем это количество на 8 бит. Получаем 108*8=864 бита.
Задача 3: Два текста содержат одинаковое количество символов. Первый текст записан на русском языке, а второй на языке племени нагури, алфавит которого состоит из 16 символов. Чей текст несет большее количество информации?
Решение:
1) I = К * а (информационный объем текста равен произведению числа символов на информационный вес одного символа).
2) Т.к. оба текста имеют одинаковое число символов (К), то разница зависит от информативности одного символа алфавита (а).
3) 2 а1 = 32, т.е. а 1 = 5 бит, 2 а2 = 16, т.е. а 2 = 4 бит.
4) I 1 = К * 5 бит, I 2 = К * 4 бит.
5) Значит, текст, записанный на русском языке в 5/4 раза несет больше информации.
Задача 4: Объем сообщения, содержащего 2048 символов, составил 1/512 часть Мбайта. Определить мощность алфавита.
Решение:
1) I = 1/512 * 1024 * 1024 * 8 = 16384 бит – перевели в биты информационный объем сообщения.
2) а = I / К = 16384 /1024 =16 бит – приходится на один символ алфавита.
3) 2*16*2048 = 65536 символов – мощность использованного алфавита.
Задача 5: Лазерный принтер Canon LBP печатает со скоростью в среднем 6,3 Кбит в секунду. Сколько времени понадобится для распечатки 8-ми страничного документа, если известно, что на одной странице в среднем по 45 строк, в строке 70 символов (1 символ – 1 байт)?
Решение:
1) Находим количество информации, содержащейся на 1 странице: 45 * 70 * 8 бит = 25200 бит
2) Находим количество информации на 8 страницах: 25200 * 8 = 201600 бит
3) Приводим к единым единицам измерения. Для этого Мбиты переводим в биты: 6,3*1024=6451,2 бит/сек.
4) Находим время печати: 201600: 6451,2 =31 секунда.
Список используемой литературы
1. Агеев В.М. Теория информации и кодирования: дискретизация и кодирование измерительной информации. - М.: МАИ, 1977.
2. Кузьмин И.В., Кедрус В.А. Основы теории информации и кодирования. - Киев, Вища школа, 1986.
3. Простейшие методы шифрования текста/ Д.М. Златопольский. – М.: Чистые пруды, 2007 – 32 с.
4. Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов / Н.Д.Угринович. – М.: БИНОМ. Лаборатория знаний, 2003. – 512 с.
5. http://school497.spb.edu.ru/uchint002/les10/les.html#n