ДвоичныеКоды -...
Transcript of ДвоичныеКоды -...
ДвоичныеДвоичные КодыКоды
В. С. ДжанмухамедовСПбГУ ИТМО КТ гр.139
Преподаватель:Столяр Сергей Ефимович
2003
2
СодержаниеСодержаниеСписок изучаемых разделов:
общее понятие о дискретном сообщении;общее понятие о кодах и кодировании;виды двоичных кодов;примеры двоичных кодов;немного о способе кодирования и декодирования;некоторые виды других кодирований.
3
СловарьСловарьВведем два понятия: информация и сообщение, смысл, которых раскроется ниже.
(Абстрактная) информация передается посредством (конкретного) сообщения.
4
11.. Дискретные сообщенияДискретные сообщения
СигналСигнал – это изменение некоторой физической величины во времени, обеспечивающее передачу сообщения (а тем самым и информации).
Дискретный сигналДискретный сигнал – это сигнал, параметр которого может принимать лишь конечное число значений.
Дискретное сообщениеДискретное сообщение – это такие сообщения, которые могут быть переданы с помощью дискретных сигналов.
5
1.1.1.1. Знаки, наборы знаков, алфавитыЗнаки, наборы знаков, алфавитыЯзыковые сообщения в письменной форме обычно
строят, записывая знаки письма (графемы) друг за другом. Однако понятие знак намного шире, чем это может показаться на первый взгляд.
ЗнакЗнак – это элемент множества с попарно различными элементами, называемого набором знаковнабором знаков.АлфавитАлфавит – линейно упорядоченное множество
знаков.МощностьМощность – это количество элементов в наборе
знаков. Будем обозначать мощность набора знаков A, как |A|.
6
1.1.1.1. Знаки, наборы знаков, алфавитыЗнаки, наборы знаков, алфавиты
Некоторые примеры алфавитов:
N10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}N6 = {0, 1, 2, 3, 4, 5}Lat = {A, B, C,…, X, Y, Z}12 знаков зодиака:Zod = { }
7
1.1.1.1. Знаки, наборы знаков, алфавитыЗнаки, наборы знаков, алфавиты
Вот еще некоторые примеры наборов знаков:Набор знаков клавиатуры компьютераНабор знаков азбуки Брайля (для слепых)Набор знаков планет { ♀ ♂ … }Набор знаков фаз Луны { , , , }Набор мастей игральных карт {♠ ♣ ♦ ♥}
8
1.21.2.. Двоичный набор, знакДвоичный набор, знак
ДвоичныйДвоичный набор знаковнабор знаков - это набор, состоящий из двух знаков. Обозначим такой набор как B.
Двоичный знакДвоичный знак - это знак двоичного набора. Вместо термина «двоичный знак» часто употребляют сокращение бит (бит (от англ.от англ. binary digitbinary digit).).
9
1.21.2.. Двоичный набор, знакДвоичный набор, знак
Примеры двоичных наборов:Bcolor = {«красный», «зелёный»}Bbrightness = {«светлый», «тёмный»}B2 = {0, 1}Пара состояний {«пробивка», «нет пробивки»}Bbool = {«истина», «ложь»}Banswer = {«нет», «да»}Пара напряжений {5v, 12v}
10
1.21.2.. Двоичный набор, знакДвоичный набор, знак
Еще несколько примеров двоичных наборов.Любая пара знаков:
{ · , − } (“точка”, “тире”){ – , + }{ , }{ < , > } (“меньше”, “больше”)
В качестве абстрактных знаков для двоичных наборов мы будем использовать набор B = {L, O}.
11
2.2. Коды и кодированиеКоды и кодированиеРассмотрим конечный набор знаков A.
СловоСлово – это последовательность знаков над набором знаков A.ММножествоножество словслов – это множество последовательностей знаков
над набором знаков A.Обозначение: A*, если возможны последовательности любой
длины и An, если длина последовательностей фиксирована.
ДДвоичнывоичныее словсловаа - это множество слов над набором знаковB = {L, О}, т.е. множество B*. Элементы множества Bn называются nn--битовымибитовыми словамисловами илиили
двоичнымидвоичными словамисловами длиныдлины nn. Множество n-битовых слов часто само снова используется в
качестве набора знаков.
Пример: OLLOL – двоичное слово длины 5.
12
2.2. Коды и кодированиеКоды и кодирование
КодКод – это правило, описывающее отображение одного набора знаков в другой набор знаков (или слов). Так же называют и множество образов при этом отображении.
Двоичное кодированиеДвоичное кодирование – это отображение некоторого набора знаков (слов) в двоичный набор слов.Если А – набор знаков и Bn – набор двоичных слов,
тос: А Bn – это двоичный код длины n.
13
2.1. 2.1. Разновидности двоичных кодов символовРазновидности двоичных кодов символовУ большинства используемых в технике кодов все
слова имеют одинаковую длину.
Двоичный код Фрэнсиса Бэкона. (Fransis Bacon, 1561-1626)
2-й международный телеграфный код CCIT-2, восходящий к И. М. Э. Бодо.(I. M. E. Baudot, 1845-1903).
Несколько моложе семиразрядный двоичный код ISO, имеющий международный стандарт (ASCII, 1963).
Код ЕС ЭВМ для пробивки перфокарт.
14
2.1. 2.1. Разновидности двоичных кодов символовРазновидности двоичных кодов символов
Двоичный код Фрэнсиса Бэкона (Fransis Bacon, 1561-1626) для кодировки букв:
Двоичный пятиразрядный, он использовался в криптографических целях уже в 1580 годах.
a - AAAAAb - AAAABc - AAABAd - AAABBe - AABAAf - AABABg - AABBAh – AABBB
i - ABAAA k - ABAAB l - ABABA m - ABABBn - ABBAAo - ABBABp - ABBBAq – ABBBB
r - BAAAA s - BAAAB t - BAABA v - BAABB w - BABAAx - BABABy - BABBAz – BABBB
15
2.1. 2.1. Разновидности двоичных кодов символовРазновидности двоичных кодов символов
Код CCIT-2, используемый для кодирования цифр. Пятиразрядный двоичный код, который до сих пор используется во внутренней и международной открытой телеграфной связи (телекс).Восходит к И. М. Э. Бодо
(I. M. E. Baudot, 1845-1903).
0 OLLOL
1 LLLOL
2 LLOOL
3 LOOOO
4 OLOLO
5 OOOOL
6 LOLOL
7 LLLOO
8 OLLOO
9 OOOLL
16
2.1. 2.1. Разновидности двоичных кодов символовРазновидности двоичных кодов символовКод ЕС ЭВМ (единая система ЭВМ) для пробивки
перфокарт является двенадцатиразрядным двоичным кодом. Восходит к Г.Холлериту (H. Hollerith, 1860-1929).
17
2.2.2.2. Прямой, обратный, дополнительный кодыПрямой, обратный, дополнительный кодыРассмотрим эти коды на примере вычитания двух целых
чисел в компьютере. Длина слова равна 8 битам.Пусть есть два числа A=37 и B=23. Необходимо вычислить
величину A–B.1) A=1001012, B=101112;2) Переводим B из прямого кода в обратный, инвертируя
каждый бит: 000101112 111010002;3) Переводим результат из обратного в дополнительный
код, прибавляя единицу: 111010002 + 12 = 111010012;4) Складываем A и полученное число:1001012 + 111010012 = 1000011102. Берем последние 8 бит
и переводим число в десятичный вид: 11102 = 8 + 4 + 2 = 14.5) Имеем: 37 – 23 = 14.
18
2.2.2.2. Прямой, обратный, дополнительный кодыПрямой, обратный, дополнительный коды
Для представления отрицательных чиселиспользуют два вида кодов.Дополнительный код для числа (–x) определяется
по формуле:
В нашем случае B=2, t=8; ai – цифры числа вдвоичном представлении x.
Обратный код для числа (–x) определяется поформуле:
Как видно, это сумма из выражения длядополнительного кода.
∑ ∑∑−
=
−
=
−
=
⋅−−+=⋅−⋅−+=−1
0
1
0
1
0
)1(1)1(1t
i
t
i
ii
ii
it
i
t BaBBaBBxB
∑−
=
⋅−−=1
0)1(
t
i
ii BaBx
19
22.3..3. Расстояние ХэммингаРасстояние ХэммингаРассмотрим случай кодирования цифр.При кодировании возникает последовательность последовательность или набор набор
словслов.
Расстояние ХэммингаРасстояние Хэмминга (R. W. Hamming) – это количество различий между двумя двоичными словами равной длины в совпадающих позициях..
Обозначение: Hamm = , где di = 0, если биты с номером iравны и di = 1, если нет.Пример. Hamm(11001110, 01100101) = 5, так как
1 1 0 0 1 1 1 00 1 1 0 0 1 0 1 количество единиц1 0 1 0 1 0 1 1
∑=
n
iid
1
20
22.3.1..3.1. Коды ГреяКоды ГреяВ алфавитах может оказаться полезным, чтобы
соседние знаки при двоичном кодировании переходили в минимально отличающиеся друг от друга слова, т.е. в слова, различающиеся лишь в одном бите.
Одношаговый код ГреяОдношаговый код Грея (F. Gray) – это код, в котором расстояние Хэмминга между соседними словами равно единице.
Если в одношаговом коде Грея расстояние Хэмминга для первого и последнего слова равно единице, то говорят о циклическом одношаговом коде циклическом одношаговом коде ГреяГрея.
21
22.3.1..3.1. Коды ГреяКоды Грея
Одним из механизмов построения кодов Грея является таблица Карно-Вейтча(M. Karnaugh, E. W. Veitch). Смотри рисунок.
22
2.3.2.2.3.2. Циклические кодыЦиклические кодыn-разрядный двоичный код для алфавита можно получить,
передвигая смотровое (считывающее) окошко вдоль подходящего циклического расположения не более 2n битов, т.ч. оно в каждый момент времени выхватывало n следующих друг за другом битов. Для n=3 подойдет такая последовательность:
OOOLLLOL
{OOO, OOL, OLL, LLL, LLO, LOL, OLO, LOO}или
OOLLLOL
{OOL, OLL, LLL, LLO, LOL, OLO, LOO}Такой код принято называть цепнымцепным.Циклический кодЦиклический код – это код, у которого циклический сдвиг в
слове не выводит за границы кода.
23
2.3.2.2.3.2. Циклические кодыЦиклические коды
Полная диаграмма переходов для 4-разрядного циклического кода
24
2.3.2.2.3.2. Циклические кодыЦиклические коды
Последовательно поворачивая головки по часовой стрелке на одну позицию, генерируем циклический одношаговый 5-разрядный код для 20 знаков.
25
2.3.2.2.3.2. Циклические кодыЦиклические коды
Циклический 4-разрядный код для 10 знаков
Циклический 4-разрядный код для 16 знаков
26
2.3.2.2.3.2. Циклические кодыЦиклические коды
Циклический4-разрядный код для 12 знаков
27
22.4..4. Код Код 11--изиз--nnЭтот код является частным видом кода mm--изиз--nn, т.е. кода
длины n, где присутствуют m единичных позиций.
LOOOOOOOOO 9OLOOOOOOOO 8OOLOOOOOOO 7OOOLOOOOOO 6OOOOLOOOOO 5OOOOOLOOOO 4OOOOOOLOOO 3OOOOOOOLOO 2OOOOOOOOLO 1OOOOOOOOOL 0
Код 1-из-10 и соответствие с десятичными цифрами
28
2.5.2.5. Лексикографический порядокЛексикографический порядок
Определим для слов w1, w2 из знаков алфавита с линейным порядком ллексикографическийексикографический порядокпорядок«<lex» индуктивно следующим образом:
1) пустое слово меньше любого;2) если для этих слов выполняется тот факт, что
первый знак w1 меньше первого знака w2, то w1 <lex w2;
если же эти знаки равны, то проделываем аналогичную процедуру сравнения для слов, полученных из исходных путем отбрасывания первых знаков.
w1 <lex w2 ⇔ (a1 < а2) v ( a1 = а2 ∧ w1´ <lex w2´ )
29
2.6.2.6. Код с весами позицийКод с весами позиций
КодКод с весами позицийс весами позиций – это код, в котором каждому разряду соответствует некоторый вес.
Например, в десятичной системе счисления i-муразряду соответствует вес 10i-1.
Пример. 245810 = 2 ·103 + 4 ·102 + 5 ·101 + 8 ·100.
30
2.6.2.6. Код с весами позицийКод с весами позиций
Рассмотрим некоторые примеры кодов с весами позиций.1) k-ичная система счисления. Допустимые цифры из диапазона 0, 1, … , k-1.Пример: k=5.20345=4·1+3 ·5+0 ·25+2 ·125=269.
2) i-ый разряд i-му числу Фибоначчи. Допустимые цифры 0 и 1.Пример: 101001Fib=1·1+0·1+0·2+1·3+0·5+1·8=12.
3) Формат записи даты и времени суток.Пример: 22. 11. 2003 или 22ч. 55мин.
31
Цифра Грея Грея-Штибица
0 OOOO
1 OOOL OLLO
2 OOLL OLLL
3 OOLO OLOL
4 OLLO OLOO
5 OLLL LLOO
Весапозиций 15 7 3 1
6 OLOL LLOL
7 OLOO LLOL
8 LLOO LLLL
9 LLOL LLLO
OOLO
2.7.2.7. ПримерыПримеры
Код ГреяКод Грея для цифр с весами 1-3-7-15, и ГреяГрея--ШтибицаШтибица(G. Stibitz) без весов – примеры одношаговых кодов.
32
2.7. ПримерыПримерыПрямой кодПрямой код имеет веса
8-4-2-1. КодКод плюс 3плюс 3 – это сдвинутый прямой код: чтобы получить десятичный эквивалент нужно вычесть три.В этом коде пары цифр 0 и 9, 1 и 8 и т.д. переходят друг в друга в результате взаимной замены O на L, тем самым упрощается получение противоположных чисел.
Цифра Прямой Плюс 3 (Штибица)
OOOO OOLL
1 OOOL OLOO
2 OOLO OLOL
3 OOLL OLLO
4 OLOO OLLL
5 OLOL LOOO
Весапозиций 8 4 2 1
6 OLLO LOOL
7 OLLL LOLO
8 LOOO LOLL
9 LOOL LLOO
0
33
Цифра КодАйкена Биквинарный 1 из 10 2 из 5
OOOOOL OOOOOOOOOL
1 OOOL OOOOLO OOOOOOOOLO OOOLL
2 OOLO OOOLOO OOOOOOOLOO OOLOL
3 OOLL OOLOOO OOOOOOLOOO OOLLO
4 OLOO OLOOOO OOOOOLOOOO OLOOL
5 LOLL LOOOOL OOOOLOOOOO OLOLO
Весапозиций 2 4 2 1 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 7 4 2 1 0
6 LLOO LOOOLO OOOLOOOOOO OLLOO
7 LLOL LOOLOO OOLOOOOOOO LOOOL
8 LLLO LOLOOO OLOOOOOOOO LOOLO
9 LLLL LLOOOO LOOOOOOOOO LOLOO
LLOOOOOOO0
2.7. 2.7. ПримерыПримеры
1-из-10, 2-из-5 – два кода вида m-из-n.БиквинарныйБиквинарный и код код АйкенаАйкена (H.H.Aiken)– коды с весами позиций.
34
2.8.2.8. Другие кодированияДругие кодирования
Существует троичное кодирование с алфавитом{1, 0, 1}.Четвертичное кодирование в криптографических
целях использовал Альберти (L. B. Alberti, 1404-1472) ещё в 1466 г. Оно представлено также «генетическим кодом», в котором используются слова длины 3. Из 64 комбинаций 61 поставлена в соответствие встречающимся в природе аминокислотам.Пример. ГЦА – гуанин, цитозин, аденин.
АГТ – аденин, гуанин, тимин и т.д.
35
2.8.2.8. Другие кодированияДругие кодирования
Для световой индикации цифр (и букв) используются специальные коды. На рисунке показаны коды для матричной индикации. Также существует код со светящимися сегментами.
36
2.8.2.8. Другие кодированияДругие кодирования
Некоторые знаки рельефного шрифта Брайля для слепых. Эти знаки для восьми точек присутствуют в кодировке Unicode.
В 1991 г. А. Немет (Dr. Abraham Nemeth) предложилкодировку математики в системе Брайля.
37
2.8.2.8. Другие кодированияДругие кодирования
Запись происходит по правилам набора выражений в ТеХе. Если требуется набрать $\frac1{\sqrt{2\pi}}$, то имеем:
Дробь-открывающая скобкаЦифра1
Дробь- чертаКорень-открывающая скобка
Цифра 2Метка греческой буквыБуква p
Корень-закрывающая скобкаДробь-закрывающая скобка
π21
38
2.8.2.8. Другие кодированияДругие кодирования
Для решения задач хранения и переработки текстовой информации приходится вводить специальные способы кодирования. В языках, использующих латиницу, всемирное призвание завоевал код ASCIIASCII – AAmerican SStandard CCode for IInformation IInterchange, предложенный в 1963 году. В этом коде любой символ кодируется 1 байтом.
|ASCII| = 256. Первые 128 твердо фиксированы. Кириллица
попадает в промежуток 27…28-1.
39
2.8.2.8. Другие кодированияДругие кодированияПомимо широко распространенной кодировки ASCII
применяется кодировка UnicodeUnicode, в которой каждый символ кодируется не одним байтом, а двумя, благодаря чему она умещает в себе множество алфавитов разных языков наряду с математическими и другим знаками.
Коды в Unicode разделены на несколько областей. Область с кодами от 0000 до 007F содержит первые 128 символов ASCII. Далее идут области, в которых расположены знаки различных письменностей, а также знаки пунктуации и технические символы; часть кодов зарезервирована для использования в будущем.
Символам кириллицы выделены коды в диапазоне от 0400 до 0451.
40
33.. Коды переменной длиныКоды переменной длиныКодКод МорзеМорзе (S. Morse, 1791-1872) – это пример кода
с двоичными словами разной длины. Набор знаков состоит из символов { · , − } (“точка”, “тире”) и символа «пропуск». Все слова не длиннее 5. Установим соответствие:
Каждой букве соответствуетпоследовательность точек и тире. Здесь применяется два этапа кодирования: первичныйи вторичный.
Пример.A = · − = OLOLLLЫ = − · − − − = OLLLOLOLLLOLLL
«точка» OL«тире» OLLL
«пропуск» OOO
41
33.. Коды переменной длиныКоды переменной длины
Другим примером кодов переменной длиныслужит восьмибитовая кодировка UTFUTF--88, предназначенная для экономного перехода междуUnicode и другими системами. Она обеспечиваетоднобайтовое представление для ASCII, двухбайтовую кодировку для еще 2K = 2·210
символов, трехбайтовую для 1M = 220 символов ипрактически бесконечное продолжение.
42
СписокСписок литературы:литературы:1. Бауэр Ф.Л., Гнац Р., Хилл У. Информатика.
Задачи и решения. – М.: Мир, 1978.2. Бауэр Ф.Л., Гооз Г. Информатика. Вводный курс:
В 2-х ч. – М.: Мир, 1990.3. Брой М. Информатика. В 4-ч. Пер. с нем. – М.:
Диалог – МИФИ, 1996.4. Питерсон У., Уэлдон Э. Коды, исправляющие
ошибки. – М.: Мир, 1976.5. Романовский И.В. Дискретный анализ. – СПб:
Невский диалект, 2000-2003.