Что такое код в информатике
Кодирование информации
Определение: |
Кодирование информации (англ. information coding) — отображение данных на кодовые слова. |
Обычно в процессе кодирования информация преобразуется из формы, удобной для непосредственного использования, в форму, удобную для передачи, хранения или автоматической обработки. В более узком смысле кодированием информации называют представление информации в виде кода. Средством кодирования служит таблица соответствия знаковых систем, которая устанавливает взаимно однозначное соответствие между знаками или группами знаков двух различных знаковых систем.
Содержание
Код [ править ]
Виды кодов [ править ]
Все вышеперечисленные коды являются однозначно декодируемыми — для такого кода любое слово, составленное из кодовых слов, можно декодировать только единственным способом.
Примеры кодов [ править ]
Однозначно декодируемый код [ править ]
Определение: |
Однозначно декодируемый код (англ. uniquely decodable code) — код, в котором любое слово составленное из кодовых слов можно декодировать только единственным способом. |
Пусть есть код заданный следующей кодовой таблицей:
[math]a_1 \rightarrow b_1[/math]
[math]a_2 \rightarrow b_2[/math]
[math]a_k \rightarrow b_k[/math]
Код является однозначно декодируемым, только тогда, когда для любых строк, составленных из кодовых слов, вида:
Всегда выполняются равенства:
Заметим, что если среди кодовых слов будут одинаковые, то однозначно декодировать этот код мы уже не сможем.
Префиксный код [ править ]
Определение: |
Префиксный код (англ. prefix code) — код, в котором никакое кодовое слово не является префиксом какого-то другого кодового слова. |
Предпочтение префиксным кодам отдается из-за того, что они упрощают декодирование. Поскольку никакое кодовое слово не выступает в роли префикса другого, кодовое слово, с которого начинается файл, определяется однозначно, как и все последующие кодовые слова.
Пример кодирования [ править ]
Закодируем строку [math]abacaba[/math] :
Такой код можно однозначно разбить на слова:
[math]00\ 01\ 00\ 1\ 00\ 01\ 00[/math]
Преимущества префиксных кодов [ править ]
Недостатки префиксных кодов [ править ]
Пример неудачного декодирования [ править ]
Предположим, что последовательность [math]abacaba[/math] из примера передалась неверно и стала:
[math]c^<**>(abacaba) = 0001001\ 1\ 00100[/math]
Разобьем ее согласно словарю:
[math] 00\ 01\ 00\ 1\ 1\ 00\ 1\ 00[/math]
[math]a\quad b\quad a\ c\ c\quad a\ c\ a[/math]
Полученная строка совпадает только в битах, которые находились до ошибочного, поэтому декодирование неравномерного кода, содержащего ошибки, может дать абсолютно неверные результаты.
Не префиксный однозначно декодируемый код [ править ]
Как уже было сказано, префиксный код всегда однозначно декодируем. Обратное в общем случае неверно:
Мы можем ее однозначно декодировать, так как знаем, что слева от двойки и справа от тройки всегда стоит единица.
После декодирования получаем: [math]abbca[/math]
Кодирование для чайников, ч.1
Не являясь специалистом в обозначенной области я, тем не менее, прочитал много специализированной литературы для знакомства с предметом и прорываясь через тернии к звёздам набил, на начальных этапах, немало шишек. При всём изобилии информации мне не удалось найти простые статьи о кодировании как таковом, вне рамок специальной литературы (так сказать без формул и с картинками).
Статья, в первой части, является ликбезом по кодированию как таковому с примерами манипуляций с битовыми кодами, а во второй я бы хотел затронуть простейшие способы кодирования изображений.
0. Начало
Давайте рассмотрим некоторые более подробно.
1.1 Речь, мимика, жесты
1.2 Чередующиеся сигналы
В примитивном виде кодирование чередующимися сигналами используется человечеством очень давно. В предыдущем разделе мы сказали про дым и огонь. Если между наблюдателем и источником огня ставить и убирать препятствие, то наблюдателю будет казаться, что он видит чередующиеся сигналы «включено/выключено». Меняя частоту таких включений мы можем выработать последовательность кодов, которая будет однозначно трактоваться принимающей стороной.
1.3 Контекст
2. Кодирование текста
Текст в компьютере является частью 256 символов, для каждого отводится один байт и в качестве кода могут быть использованы значения от 0 до 255. Так как данные в ПК представлены в двоичной системе счисления, то один байт (в значении ноль) равен записи 00000000, а 255 как 11111111. Чтение такого представления числа происходит справа налево, то есть один будет записано как 00000001.
Итак, символов английского алфавита 26 для верхнего и 26 для нижнего регистра, 10 цифр. Так же есть знаки препинания и другие символы, но для экспериментов мы будем использовать только прописные буквы (верхний регистр) и пробел.
Тестовая фраза «ЕХАЛ ГРЕКА ЧЕРЕЗ РЕКУ ВИДИТ ГРЕКА В РЕЧКЕ РАК СУНУЛ ГРЕКА РУКУ В РЕКУ РАК ЗА РУКУ ГРЕКУ ЦАП».
2.1 Блочное кодирование
Информация в ПК уже представлена в виде блоков по 8 бит, но мы, зная контекст, попробуем представить её в виде блоков меньшего размера. Для этого нам нужно собрать информацию о представленных символах и, на будущее, сразу подсчитаем частоту использования каждого символа:
Кодирование информации. Коды. Системы кодирования
Урок 4. Информатика 8 класс
В данный момент вы не можете посмотреть или раздать видеоурок ученикам
Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобрев в каталоге.
Получите невероятные возможности
Конспект урока «Кодирование информации. Коды. Системы кодирования»
Для обмена информацией с другими людьми человек использует естественные и формальные языки. Представление информации с помощью какого-либо языка часто называют кодированием.
Все множество символов, используемых для кодирования, называется алфавитом кодирования. Например, в памяти компьютера любая информация кодируется с помощью двоичного алфавита, содержащего всего два символа: 0 и 1.
Код состоит из определенного количества знаков, т. е. имеет определенную длину.
Количество знаков в коде называется длиной кода.
В процессе обмена информацией между людьми часто приходится переходить от одной формы представления информации к другой. Так, в процессе чтения вслух производится переход от письменной формы представления информации к устной и, наоборот, в процессе диктанта или записи объяснения учителя происходит переход от устной формы к письменной. В процессе преобразования информации из одной формы представления в другую происходит перекодирование информации.
Информация может быть представлена в форме числа, текста, графики или звука.
Средством перекодирования служит таблица соответствия знаковых систем (таблица перекодировки), которая устанавливает взаимно однозначное соответствие между знаками или группами знаков двух различных знаковых систем.
Чаще всего кодированию подвергаются тексты на естественных языках. Существуют 3 основных способа кодирования текста:
Полный набор символов, используемый для кодирования текста, называется алфавитом или азбукой.
Рассмотрим некоторые способы кодирования.
1. Кодированием информации с помощью букв русского алфавита. Суть этого способа заключается в том, чтобы каждую букву сообщения заменить ее номером в алфавите.
2. Флажковая азбука. При помощи этой азбуки осуществляется передача и прием сообщений между судами и кораблями в пределах прямой видимости. Здесь, каждой букве соответствует определенный флаг.
Информация кодируется тремя «буквами»:
· длинный сигнал (тире),
· короткий сигнал (точка),
· отсутствие сигнала (пауза) для разделения букв.
Таким образом, кодирование сводится к использованию набора символов, расположенных в строго определенном порядке.
4. Шифр Цезаря. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, которая считается написанным по кругу.
5. Перевод чисел из одной системы счисления в другую.
Пусть требуется перевести двоичное число в десятичную систему счисления.
Чтобы осуществлять перевод из двоичной системы счисления в десятичную, следует для начала пронумеровать разряды исходного числа справа налево, начиная с нуля.
Запишем число в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 2:
И вычислив по правилам десятичной арифметики, получили число 232.
Пусть теперь требуется перевести двоичное число в восьмеричную систему счисления. Для этого следует разбить это двоичное число на триады, начиная с младшего бита.
Если старшая триада не заполнена до конца, как в нашем случае, следует дописать в ее старшие разряды нули. После этого необходимо заменить двоичные триады, начиная с младшей, на числа, равные им в восьмеричной системе. Это числа: 4, 7, 6, 6, 4, 5, 5, 2.
Таким образом, наше двоичное число запишется в виде:
Аналогично поступаем при переводе чисел из двоичной системы счисления в шестнадцатеричную, но разбиение двоичного числа производим на тетрады. Для примера будем использовать то же двоичное число, что и при переводе в восьмеричную систему счисления.
Заменяя двоичные тетрады на их шестнадцатеричные значения, то есть на C, B, D, C, 6, 5, получим искомое шестнадцатеричное число:
А теперь давайте мы попробуем перевести число 158 из десятичной в двоичную систему счисления. Для этого нужно выполнить последовательное деление нацело числа 158 на основании новой системы счисления, то есть на 2. Получим:
Далее число 79 делим на 2. Аналогичные действия выполняем до тех пор, пока частное не станет равным единице.
Затем запишем остатки от деления в обратном порядке, заменив их цифрами новой системы счисления, т.е. получили число 11101000.
При переводе числа из шестнадцатеричной системы счисления в двоичную, необходимо только заменить каждую цифру шестнадцатеричного числа ее эквивалентом в двоичной системе счисления (используя таблицу соответствия). И не забываем, что каждое шестнадцатеричное число следует заменять двоичным, дополняя его до 4 разрядов (в сторону старших разрядов).
Пусть требуется перевести шестнадцатеричное число F1 в двоичное число. Воспользовавшись таблицей соответствия, получим:
F соответствуют четыре единицы в двоичной системе счисления, а 1 соответствует такая запись 0, 0, 0, 1 в двоичной системе счисления.
Итак, число F1 в двоичной системе счисления запишется так 11110001.
Пусть теперь нам нужно перевести число F1 из шестнадцатеричной системы счисления в восьмеричную. Обычно при таком переводе чисел вначале шестнадцатеричное число переводят в двоичное, затем разбивают его на триады, начиная с младшего бита, а потом заменяют триады соответствующими им эквивалентами в восьмеричной системе. В итоге у на получится, что исходному числу в восьмеричной системе счисления соответствует число 361.
Что такое код в информатике
Представление информации происходит в различных формах в процессе восприятия окружающей среды живыми организмами и человеком, в процессах обмена информацией между человеком и человеком, человеком и компьютером, компьютером и компьютером и так далее. Информация, поступает в виде условных знаков или сигналов самой разной физической природы.
Это свет, звук, запах, касания; это слова, значки, символы, жесты и движения.
Для того чтобы произошла передача информации, мы должны не только принять сигнал от кого-то, но и расшифровать его.
Так, услышав звонок будильника, человек понимает, что пришло время просыпаться;
телефонный звонок — кому-то нужно с нами поговорить;
школьный звонок сообщает учащимся о долгожданной перемене.
Для правильного понятия разных сигналов требуется разработка кода или кодирование.
Код — это система условных знаков для представления информации.
Кодирование — это перевод информации в удобную для передачи, обработки или хранения форму с помощью некоторого кода.
Средством кодирования служит таблица соответствия знаковых систем, которая устанавливает взаимно однозначное соответствие между знаками или группами знаков двух различных знаковых систем.
Обратное преобразование называется декодированием.
Декодирование — это процесс восстановления содержания закодированной информации.
Можно рассмотреть в качестве примера кодирования соответствие цифрового и штрихового кодов товара. Такие коды имеются на каждом товаре и позволяют полностью идентифицировать товар (страну и фирму производителя, тип товара и др.).
Существует три основных способа кодирования информации:
●Числовой способ — с помощью чисел.
●Символьный способ — информация кодируется с помощью символов того же алфавита, что и исходящий текст.
●Графический способ — информация кодируется с помощью рисунков или значков.
Существует равномерное и неравномерное кодирование. При равномерном кодировании сообщение декодируется однозначно. При неравномерном кодировании для однозначного декодирования сообщения нужно, чтобы выполнялось прямое и обратное условие Фано(прямое: никакой код не должен быть началом другого кода, обратное: никакой код не должен быть концом другого кода)
Понимать, что мы можем закодировать сообщение, даже если условие Фано не выполняется, но возможно не сможем его однозначно декодировать.
Однозначно декодировать –получить один единственный точный вариант.
Двоичное кодирование информации в компьютере.
В компьютере для представления информации используется двоичное кодирование, так как удалось создать надежно работающие технические устройства, которые могут со стопроцентной надежностью сохранять и распознавать не более двух различных состояний (цифр):
· электромагнитные реле (замкнуто/разомкнуто), широко использовались в конструкциях первых ЭВМ;
· участок поверхности магнитного носителя информации (намагничен/размагничен);
· участок поверхности лазерного диска (отражает/не отражает);
· триггер, может устойчиво находиться в одном из двух состояний, широко используется в оперативной памяти компьютера.
Кодирование текстовой информации.
Текстовую информацию кодируют двоичным кодом через обозначение каждого символа алфавита определенным целым числом. С помощью восьми двоичных разрядов возможно закодировать 256 различных символов. Данного количества символов достаточно для выражения всех символов английского и русского алфавитов.
Для кодировки русского алфавита были разработаны несколько вариантов кодировок:
2) КОИ-8 (Код Обмена Информацией, восьмизначный) – другая популярная кодировка российского алфавита, распространенная в компьютерных сетях.
3) ISO (InternationalStandardOrganization – Международный институт стандартизации) – международный стандарт кодирования символов русского языка. На практике эта кодировка используется редко.
Ограниченный набор кодов (256) создает трудности для разработчиков единой системы кодирования текстовой информации. Вследствие этого было предложено кодировать символы не 8-разрядными двоичными числами, а числами с большим разрядом, что вызвало расширение диапазона возможных значений кодов. Система 16-разрядного кодирования символов называется универсальной – UNICODE.
Кодирование графической информации.
Существует несколько способов кодирования графической информации.
поэтому способ растрового кодирования базируется на использовании двоичного кода представления графических данных. Общеизвестным стандартом считается приведение черно-белых иллюстраций в форме комбинации точек с 256 градациями серого цвета, т. е. для кодирования яркости любой точки необходимы 8-разрядные двоичные числа.
В основу кодирования цветных графических изображений положен принцип разложения произвольного цвета на основные составляющие, в качестве которых применяются три основных цвета: красный (Red), зеленый (Green) и синий (Blue). На практике принимается, что любой цвет, который воспринимает человеческий глаз, можно получить с помощью механической комбинации этих трех цветов. Такая система кодирования называется RGB. При применении 24 двоичных разрядов для кодирования цветной графики такой режим носит название полноцветного (TrueColor).
Для любого из основных цветов дополнительным будет являться цвет, который образован суммой пары остальных основных цветов. Соответственно среди дополнительных цветов можно выделить голубой (Cyan), пурпурный (Magenta) и желтый (Yellow). Принцип разложения произвольного цвета на составляющие компоненты используется не только для основных цветов, но и для дополнительных. Этот метод кодирования цвета применяется в полиграфии, но там используется еще и четвертая краска – черная (Black), поэтому эта система кодирования обозначается четырьмя буквами – CMYK. Для представления цветной графики в этой системе применяется 32 двоичных разряда. Данный режим также носит название полноцветного.
Кодирование звуковой информации.
В настоящий момент не существует единой стандартной системы кодирования звуковой информации, так как приемы и методы работы со звуковой информацией начали развиваться по сравнению с методами работы с другими видами информации самыми последними. Поэтому множество различных компаний, которые работают в области кодирования информации, создали свои собственные корпоративные стандарты для звуковой информации. Но среди этих корпоративных стандартов выделяются два основных направления.
В основе метода FM (FrequencyModulation) положено утверждение о том, что теоретически любой сложный звук может быть представлен в виде разложения на последовательность простейших гармонических сигналов разных частот. Каждый из этих гармонических сигналов представляет собой правильную синусоиду и поэтому может быть описан числовыми параметрами или закодирован. Звуковые сигналы образуют непрерывный спектр. Обратное преобразование, которое необходимо для воспроизведения звука, закодированного числовым кодом, производится с помощью цифроаналоговых преобразователей (ЦАП). Из-за таких преобразований звуковых сигналов возникают потери информации, которые связаны с методом кодирования, поэтому качество звукозаписи с помощью метода FM обычно получается недостаточно удовлетворительным. Этот метод широко использовался в те годы, когда ресурсы средств вычислительной техники были явно недостаточны.
Основная идея метода таблично-волнового синтеза (Wave-Table) состоит в том, что в заранее подготовленных таблицах находятся образцы звуков для множества различных музыкальных инструментов. Данные звуковые образцы носят название сэмплов. Числовые коды, которые заложены в сэмпле, выражают такие его характеристики, как тип инструмента, номер его модели, высоту тона и тд. Поскольку для образцов применяются реальные звуки, то качество закодированной звуковой информации получается очень высоким и приближается к звучанию реальных музыкальных инструментов, что в большей степени соответствует нынешнему уровню развития современной компьютерной техники.
Множество кодов очень прочно вошло в нашу жизнь.
●числовая информация кодируется арабскими, римскими цифрами и др.
●для общения и письма мы используем код — русский язык, в Китае — китайский и т.д.
●с помощью нотных знаков кодируется любое музыкальное произведение, а на экране проигрывателя вы можете увидеть громкий или тихий звук, закодированный с помощью графика.
●часто бывает так, что информацию надо сжать и представить в краткой, но понятной форме. Тогда применяют пиктограммы, например, на двери магазина, на столбах в парке, на дороге.
Для передачи информации, людьми были придуманы специальные коды, к ним относятся:
Что такое код в информатике
22. КОДИРОВАНИЕ ИНФОРМАЦИИ
22.1. Общие сведения
В качестве элементов кодируемой информации могут выступать:
— буквы, слова и фразы естественного языка;
— различные символы, такие как знаки препинания, арифметические и логические операции, операторы сравнения и т.д. Следует отметить, что сами знаки операций и операторы сравнения – это кодовые обозначения;
— ситуации и явления;
Кодовые обозначения могут представлять собой:
— буквы и сочетания букв естественного языка;
— световые и звуковые сигналы;
— набор и сочетание химических молекул;
Кодирование может выполняться в целях:
— удобства хранения, обработки и передачи информации (как правило, закодированная информация представляется более компактно, а также пригодна для обработки и передачи автоматическими программно-техническими средствами);
— удобства информационного обмена между субъектами;
— идентификации объектов и субъектов;
— сокрытия секретной информации;
Кодирование информации бывает одно- и многоуровневым. Примером одноуровневого кодирования служат световые сигналы, подаваемые светофором (красный – стой, желтый – приготовиться, зеленый – вперед). В качестве многоуровневого кодирования можно привести представление визуального (графического) образа в виде файла фотографии. Вначале визуальная картинка разбивается на составляющие элементарные элементы (пикселы), т.е. каждая отдельная часть визуальной картинки кодируется элементарным элементом. Каждый элемент представляется (кодируется) в виде набора элементарных цветов (RGB: англ. red – красный, green – зеленый, blue – синий) соответствующей интенсивностью, которая в свою очередь представляется в виде числового значения. Впоследствии наборы чисел, как правило, преобразуются (кодируются) с целью более компактного представления информации (например, в форматах jpeg, png и т.д.). И наконец, итоговые числа представляются (кодируются) в виде электромагнитных сигналов для передачи по каналам связи или областей на носителе информации. Следует отметить, что сами числа при программной обработке представляются в соответствии с принятой системой кодирования чисел.
Кодирование информации может быть обратимым и необратимым. При обратимом кодировании на основе закодированного сообщения можно однозначно (без потери качества) восстановить кодируемое сообщение (исходный образ). Например, кодирование с помощью азбуки Морзе или штрихкода. При необратимом кодировании однозначное восстановление исходного образа невозможно. Например, кодирование аудиовизуальной информации (форматы jpg, mp3 или avi) или хеширование.
Различают общедоступные и секретные системы кодирования. Первые используются для облегчения информационного обмена, вторые – в целях сокрытия информации от посторонних лиц.
1 В некоторых секретных кодовых системах присутствуют элементы, позволяющие получать разные закодированные сообщения для определенного исходного сообщения (аддитивные числа, многозначные замены, правила перешифрования).
22.2. Общедоступные кодовые системы
В качестве других распространенных кодовых систем можно привести:
— обозначение химических элементов из периодической таблицы Дмитрия Ивановича Менделеева;
— сокращенные наименования дисциплин в расписании занятий студентов.
Ниже приводится описание других общедоступных кодовых систем в целях иллюстрации многообразия их назначения и способов представления кодовых обозначений [17].
Русская буква | Латинская буква | Код Морзе | Русская буква | Латинская буква | Код Морзе | Символ | Код Морзе |
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 гг.). Он плохо слышал и общался со своей женой, Мэри Стиуэлл, с помощью азбуки Морзе. Во время ухаживания Эдисон сделал предложение, отстучав слова рукой, и она ответила тем же способом. Телеграфный код стал обычным средством общения для супругов. Даже когда они ходили в театр, Эдисон клал руку Мэри себе на колено, чтобы она могла «телеграфировать» ему диалоги актеров [44].
Управляющие символы | ||||
Двоичный код | Десятичный код | Назначение | ||
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. Соответствие между английским и русским алфавитами, принятое в МТК-2, было использовано при создании компьютерных кодировок КОИ-7 и КОИ-8.
Кодировка 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 | 01111110 | 126 | 10111110 | 190 | ѕ | 11111110 | 254 | ю | ||
00111111 | 63 | ? | 01111111 | 127 | DEL | 10111111 | 191 | ї | 11111111 | 255 | я |
Рис. 22.4. Кодовая страница Windows 1251
Коды в стандарте Unicode разделены на несколько разделов. Первые 128 кодов соответствуют кодировке ASCII. Далее расположены разделы букв различных письменностей, знаки пунктуации и технические символы. В частности прописным и строчным буквам русского алфавита соответствуют коды 1025 (Ё), 1040-1103 (А-я) и 1105 (ё).
Для изображения символов (в основном букв и цифр) в шрифте Брайля используются 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г.
Убежденный в том, что система реализуема, Вудланд покинул Филадельфию и перебрался во Флориду в квартиру своего отца для продолжения работы. 20 октября 1949 г. Вудланд и Сильвер подали заявку на изобретение, которая была удовлетворена 7 октября 1952 г. Вместо привычных нам линий патент содержал описание штрихкодовой системы в виде концентрических кругов.
Рис. 22.8. Патент системы Вудланда и Сильвера с концентрическими кругами, предшественниками современных штрихкодов
Впервые штрихкоды начали официально использоваться в 1974 г. в магазинах г. Трой, штат Огайо [44]. Системы штрихового кодирования нашли широкое применение в общественной жизни: торговля, почтовые отправления, финансовые и судебные уведомления, учет единиц хранения, идентификация личностей, контактная информация (веб-ссылки, адреса электронной почты, телефонные номера) и т.д.
Различают линейные (читаемые в одном направлении) и двумерные штрихкоды. Каждая из разновидностей различается как размерами графического изображения, так и объемами представленной информации. В следующей таблице приведены примеры некоторых разновидностей штрихкода.
Таблица 22.1. Разновидности штрихкодов
Числа кодируются в т.н. форматах с фиксированной и плавающей запятой.
1. Формат с фиксированной запятой, в основном, применяется для целых чисел, но может применяться и для вещественных чисел, у которых фиксировано количество десятичных знаков после запятой. Для целых чисел подразумевается, что «запятая» находится справа после младшего бита (разряда), т.е. вне разрядной сетки. В данном формате существуют два представления: беззнаковое (для неотрицательных чисел) и со знаком.
Различают прямой, обратный и дополнительный коды записи знаковых чисел.
— вычитаемое число инвертируется (представляется в виде обратного кода);
— если количество разрядов результата получается больше, чем отведено на представление чисел, то крайний левый разряд (старший) отбрасывается, а к результату добавляется 12.
В следующей таблице приведены примеры вычитания.
Таблица 22.2. Примеры вычитания двух чисел с использованием обратного кода
X – Y | 5 – 5 | 6 – 5 | 5 – 6 | 5 – (-6) |
X2 | 00000101 | 00000110 | 00000101 | 00000101 |
Y2 | 00000101 | 00000101 | 00000110 | 11111001 |
Замена сложением | 5 + (-5) | 6 + (-5) | 5 + (-6) | 5 + 6 |
Обратный код для вычитаемого (-Y2) | 11111010 | 11111010 | 11111001 | 00000110 |
Сложение | 00000101 + 11111010 11111111 | 00000110 + 11111010 100000000 | 00000101 + 11111001 11111110 | 00000101 + 00000110 00001011 |
Отбрасывание старшего разряда и добавление 12 | не требуется | 00000000 + 00000001 00000001 | не требуется | не требуется |
Результат | -0 | 1 | -1 | 11 |
Несмотря на то, что обратный код значительно упрощает вычислительные процедуры, а соответственно и быстродействие компьютеров, наличие двух «нулей» и другие условности привели к появлению дополнительного кода. При представлении отрицательного числа его модуль вначале инвертируется, как в обратном коде, а затем к инверсии сразу добавляется 12.
В следующей таблице приведены некоторые числа в различном кодовом представлении.
Таблица 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) |
X2 | 00000101 | 00000110 | 00000101 | 00000101 |
Y2 | 00000101 | 00000101 | 00000110 | 11111010 |
Замена сложением | 5 + (-5) | 6 + (-5) | 5 + (-6) | 5 + 6 |
Дополнительный код для вычитаемого (-Y2) | 11111011 | 11111011 | 11111010 | 00000110 |
Сложение | 00000101 + 11111011 00000000 | 00000110 + 11111011 100000001 | 00000101 + 11111010 11111111 | 00000101 + 00000110 00001011 |
Отбрасывание старшего разряда и добавление 12 | не требуется | 00000001 | не требуется | не требуется |
Результат | -0 | 1 | -1 | 11 |
Можно возразить, что представление чисел в дополнительных кодах требует на одну операцию больше (после инверсии всегда требуется сложение с 12), что может и не потребоваться в дальнейшем, как в примерах с обратными кодами. В данном случае срабатывает известный «принцип чайника». Лучше сделать процедуру линейной, чем применять в ней правила «Если A то B» (даже если оно одно). То, что с человеческой точки зрения кажется увеличением трудозатрат (вычислительной и временной сложности), с точки зрения программно-технической реализации может оказаться эффективней.
2. Формат с плавающей запятой, в основном, используется для вещественных чисел. Число в данном формате представляется в экспоненциальном виде
Так как числа хранится и обрабатывается в компьютерах в двоичном виде, то для этих целей принимается e = 2. Одной из возможных форм двоичного представления чисел с плавающей запятой является следующая.
bn± | bn7 | bn6 | bn5 | bn4 | bn3 | bn2 | bn1 | bm± | bm15 | bm14 | bm13 | bm12 | bm11 | bm10 | bm9 | bm8 | bm7 | bm6 | bm5 | bm4 | bm3 | bm2 | bm1 |
знак | величина | знак | величина | ||||||||||||||||||||
порядок | мантисса |
Рис. 22.9. Двоичный формат представления чисел с плавающей запятой
Биты bn± и bm±, означающие знак порядка и мантиссы, кодируются аналогично числам с фиксированной запятой: для положительных чисел «0», для отрицательных – «1». Значение порядка выбирается таким образом, чтобы величина целой части мантиссы в десятичном (и соответственно в двоичном) представлении равнялась «1», что будет соответствовать нормализованной записи для двоичных чисел. Например, для числа 35010 порядок n = 810 = 0010002 (350 = 1.3671875 * 2 8 ), а для 57610 – n = 910 = 0010012 (576 = 1.125 * 2 9 ). Битовое представление величины порядка может быть выполнено в прямом, обратном или дополнительном коде (например, для n = 810 бинарный вид 0010002). Величина мантиссы отображает дробную часть. Для ее преобразования в двоичный вид, она последовательно умножается на 2, пока не станет равной 0. Например,
Рис. 22.10. Пример получения дробной части в бинарном виде
Целые части, получаемые в результате последовательного перемножения, и представляют собой двоичный вид дробной части (0.367187510 = 01011112). Оставшаяся часть разрядов величины мантиссы заполняется 0. Таким образом, итоговый вид числа 350 в формате с плавающей запятой с учетом представления мантиссы в нормализованной записи
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
знак + | величина 2 8 | знак + | величина (1) + 0.3671875 | ||||||||||||||||||||
порядок | мантисса |
Рис. 22.11. Двоичный вид числа 350
Рис. 22.12. Общий формат представления двоичных чисел в стандарте IEEE 754
Форматы представления отличаются количеством бит (байт), отводимым для представления чисел, и, соответственно, точностью представления самих чисел.
Таблица 22.5. Характеристики форматов представления двоичных чисел в стандарте IEEE 754
Величина мантиссы указывается, как и в предыдущем случае, в нормализованном виде.
C учетом вышеизложенного, число 35010 в формате одинарной точности стандарта IEEE 754 записывается следующим образом.
Рис. 22.13. Двоичный вид числа 350 по стандарту IEEE
В заключение по числам с плавающей запятой несколько слов о пресловутой «ошибке округления». Т.к. в двоичной форме представления числа хранится только несколько значащих цифр, она не может «покрыть» все многообразие вещественных чисел в заданном диапазоне. В результате, если число невозможно точно представить в двоичной форме, оно представляется ближайшим возможным. Например, если к числу типа 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)
Белки практически всех живых организмов построены из аминокислот всего 20 видов. Эти аминокислоты называют каноническими. Каждый белок представляет собой цепочку или несколько цепочек аминокислот, соединенных в строго определенной последовательности. Эта последовательность определяет строение белка, а, следовательно, все его биологические свойства. Синтез белков (т.е. реализация генетической информации в живых клетках) осуществляется на основе информации, заложенной в ДНК. Для кодирования каждой из 20 аминокислот, а также сигнала «стоп», означающего конец белковой последовательности, достаточно трех последовательных нуклеотидов (триплета).
Рис. 22.15. Фрагмент ДНК
3 Содержит азотистое основание, соединенное с сахаром, и фосфорную кислоту.
22.3. Секретные кодовые системы
Вплоть до XVII столетия в номенклаторах слова открытого текста и их кодовые замены шли в алфавитном порядке, пока французский криптолог Антуан Россиньоль не предложил использовать более стойкие номенклаторы, состоящие из двух частей. В них существовало два раздела: в одном перечислялись в алфавитном порядке элементы открытого текста, а кодовые элементы были перемешаны. Во второй части в алфавитном порядке шли перечни кодов, а перемешанными были уже элементы открытого текста.
Изобретение телеграфа и азбуки Морзе, а также прокладка трансатлантического кабеля в середине XIX в. значительно расширило сферы применения секретных кодов. Помимо традиционных областей их использования (в дипломатической переписке и в военных целях) они стали широко использоваться в коммерции и на транспорте. Секретные кодовые системы того времени в своем названии содержали слово «код» («Код Госдепартамента (1867 г.)», «Американский код для окопов», «Речные коды : Потомак», «Черный код») или «шифр» («Шифр Госдепартамента (1876 г.)», «Зеленый шифр»). Следует отметить, что, несмотря на наличие в названии слова «шифр», в основу этих систем было положено кодирование.
Рис. 22.16. Фрагмент «Шифра Госдепартамента (1899 г.)»
Разработчики кодов, как и составители шифров, нередко добавляли дополнительные степени защиты, чтобы затруднить взлом своих кодов. Такой процесс называется перешифрованием. В итоге секретные кодовые системы сочетали в себе, как стеганографические, так и криптографические способы обеспечения конфиденциальности информации. Наиболее популярные из них приведены в следующей таблице.
Таблица 22.6. Способы обеспечения конфиденциальности информации в секретных кодовых системах
2. Шифр Госдепартамента 1899 г.: Russia (Россия) – Promotes; Cabinet of Russia (Правительство России) – Promptings.
2. Номенклатор Джеймса Мэдисона (1781 г.): o – 527; p – 941.
Сочетание различных способов кодирования и перешифровки в кодовой системе было обычной практикой у разработчиков кодов и стало применяться практически с самого начала их появления. Так, еще в номенклаторе, использовавшемся в г. Сиена в XV в., помимо кодовых замен слов, применялись шифралфавиты для замены букв, их удвоенных сочетаний и пустых знаков. Наибольшего расцвета эта практика получила в конце XIX – начале XX вв. В частности в «Шифре Госдепартамента 1876 г.» (англ. Red Book – Красная книга), состоящем из 1200 страниц, и его дополнении «Неподдающийся декодированию код: дополнение к шифру Госдепартамента» применялись:
— кодовые обозначения в виде слов и чисел;
— 30 шифралфавитов для замены букв;
— 50 правил перешифрования, включая аддитивные числа, перестановки кодовых обозначений и их частей.
В дополнении к «Шифру Госдепартамента 1899 г.» (англ. Blue Book – Синяя книга) были описаны еще 25 дополнительных правил перешифрования: изменение направления чтения и записи, прибавление или вычитание чисел, замена кодовых чисел другими кодовыми числами.
Разработчики кодов, чтобы закодировать сообщение, могут не только создавать с самого начала новые коды, но и воспользоваться уже имеющимися текстами. Т.н. книжные коды по своей сути аналогичны книжному шифру. В отличие от них замене подлежит не буква, а все слово целиком. Таким образом, кодовая замена представляет собой тройку чисел «страница.строка.слово». В книжных шифрах, как и в кодовых системах, рассмотренных выше, нашли широкое применение различные способы перешифровки. В частности, аддитивные числа, перестановки цифр и повторные замены.
Несомненным преимуществом книжного кода является то, что исключается необходимость использовать вызывающие подозрение кодовые книги — обнаружение таковой может привести к провалу агента. В то же время саму книгу можно потерять или ее могут украсть, в результате чего окажется скомпрометированной вся система.