- •Федеральное государственное бюджетное образовательное учреждение
- •1. Перевод чисел из одной системы счисления в другую
- •1.1. Правила перевода целых чисел
- •1.2. Правила перевода правильных дробей
- •0,1101 – Результирующее число.
- •1.3. Правило перевода дробных чисел
- •2. Построение прямых кодов и кодирование дискретного сигнала
- •3. Построение кодов с учетом частоты символов и кодирование дискретного сигнала
- •4. Построение кода Грея и кодирование дискретного сигнала
- •5. Криптографическое кодирование дискретного сигнала методом простой подстановки
- •6. Криптографическое кодирование дискретного сигнала методом Виженера
- •7. Построение эффективных кодов методом Шеннона-Фано и кодирование дискретного сигнала
- •8. Построение эффективных кодов методом Хаффмена и кодирование дискретного сигнала
- •9. Измерение дискретного сигнала
- •10. Сложение вещественных чисел в обратных кодах
- •Нормализация
- •Размещение в разрядных сетках
- •Выравнивание порядков
- •Сдвиг мантиссы
- •11. Сложение вещественных чисел в дополнительных кодах
1.3. Правило перевода дробных чисел
Отдельно переводится целая часть числа, отдельно – дробная. Результаты складываются.
Пример 1.15. Выполнить перевод из десятичной системы счисления в шестнадцатеричную числа 19,847. Перевод выполнять до трех значащих цифр после запятой.
Представим исходное число как сумму целого числа и правильной дроби:
19,847=19+0,847.
Как следует из примера 1.2, 19=1316; а в соответствии с примером 1.9 0,847=0,D8D16.
Тогда имеем:
19+ 0,847=1316+0,D8D16=13,D8D16.
Таким образом, 19,847=13,D8D16.
2. Построение прямых кодов и кодирование дискретного сигнала
Задание к работе: для алфавита, используемого при формировании фамилии, имени, отчества студента (далее -исходного текста), построить прямые двоичные коды постоянной длины и закодировать ими исходный текст (т.е. фамилию, имя и отчество). Для простоты в исходном тексте игнорировать регистр и пробелы между словами.
Решение задачи
Пусть фамилия, имя и отчество студента Петров Иван Васильевич. Тогда исходным текстом является текстпетровиванвасильевич, а алфавит - это множество символов {п, е, т, р, о, в, и, а, н, с, л, ь, ч}.
Для построенияпрямых кодов выполним следующую последовательность действий:
выполним лексикографическое упорядочение своего алфавита (графа 1 таблицы 2.1):
Таблица 2.1
Символ алфавита |
Номер по порядку |
Прямой код |
1 |
2 |
3 |
а |
0 |
0000 |
в |
1 |
0001 |
е |
2 |
0010 |
и |
3 |
0011 |
л |
4 |
0100 |
н |
5 |
0101 |
о |
6 |
0110 |
п |
7 |
0111 |
р |
8 |
1000 |
с |
9 |
1001 |
т |
10 |
1010 |
ч |
11 |
1011 |
ь |
12 |
1100 |
пронумеруем символы алфавита, начиная с нуля (графа 2 таблицы 2.1),
определим мощность N алфавита (т.е. число символов алфавита): N = 13,
используя комбинаторный подход к измерению информации, рассчитаем требуемый размер кода, достаточный для кодирования всех символов исходного алфавита, по формуле: l = [log2 N], где скобки[ ]означают округление результата до ближайшего большего целого числа. Для нашего примераl = [log2 13] = [3,7] = 4,
каждый номер символа представим четырехразрядным (как следует из шага 4) двоичным числом - получим код постоянной длины (графа 3 таблицы 2.1).
Кодированиеисходного текста дает (для простоты закодируем отдельно фамилию, имя, отчество)1:
петров 0111 0010 1010 1000 0110 0001
иван0011 0001 0000 0101
васильевич 0001 0000 1001 0011 0100 1100 0010 0001 0011 1011
3. Построение кодов с учетом частоты символов и кодирование дискретного сигнала
Задание к работе: построить для алфавита, полученного в задании 2, двоичные коды, учитывающие частоту символов. Расчет частоты выполнить поисходному тексту. Закодировать полученным кодомисходный текст.
Решение задачи
Для построения требуемых кодов выполним следующую последовательность действий:
для расчета частот символов алфавита (графа 1 таблицы 3.1) определим число появлений miкаждого i-го символа алфавита в исходном тексте (графа 2 таблицы 3.1):
Таблица 3.1
Символ алфавита |
Число появлений mi |
1 |
2 |
а |
2 |
в |
4 |
е |
2 |
и |
3 |
л |
1 |
н |
1 |
о |
1 |
п |
1 |
р |
1 |
с |
1 |
т |
1 |
ч |
1 |
ь |
1 |
для определения размера кода вновь используем формулу l=[log2 N] приN=13. Получаем:l = [logh 13] = [3,7] = 4,
упорядочим список символов алфавита А по убыванию частоты. Получим графы 1,2 таблицы 3.2 ,
назначим символам коды постоянной длины, число единиц в которых тем больше, чем меньше частота символа (графа 3 таблицы 3.2).
Таблица 3.2
Символ алфавита |
Число появлений mi |
Код |
1 |
2 |
3 |
в |
4 |
0000 |
и |
3 |
0001 |
а |
2 |
0010 |
е |
2 |
0100 |
л |
1 |
1000 |
н |
1 |
1010 |
о |
1 |
1001 |
п |
1 |
0110 |
р |
1 |
0101 |
с |
1 |
0011 |
т |
1 |
1100 |
ч |
1 |
1011 |
ь |
1 |
1101 |
Кодирование исходного текста полученным кодом дает результат (отдельно закодированы фамилия, имя и отчество):
петров0110 0100 1100 0101 1001 0000
иван0001 0000 0010 1010
васильевич0000 0010 0011 0001 1000 1101 0100 0000 0001 1011