
- •160001, Г. Вологда, ул. Челюскинцев, 3.
- •Предисловие
- •Введение
- •Раздел 1. Теория информации
- •Глава 1. Исходные понятия информатики
- •1.1. Начальные определения
- •1.2. Формы представления информации
- •1.3. Преобразование сообщений
- •Контрольные вопросы и задания
- •Глава 2. Понятие информации в теории Шеннона
- •2.1. Понятие энтропии
- •2.1.1. Энтропия как мера неопределенности
- •2.1.2. Свойства энтропии
- •2.1.3. Условная энтропия
- •2.2. Энтропия и информация
- •2.3. Информация и алфавит
- •Контрольные вопросы и задания
- •Глава 3. Кодирование символьной информации
- •3.1. Постановка задачи кодирования, Первая теорема Шеннона
- •3.2. Способы построения двоичных кодов
- •3.2.1. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды
- •3.2.2. Равномерное алфавитное двоичное кодирование. Байтовый код
- •3.2.3. Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •3.2.4. Блочное двоичное кодирование
- •Контрольные вопросы и задания
- •Глава 4. Представление и обработка чисел в компьютере
- •4.1. Системы счисления
- •4.2. Представление чисел в различных системах счисления
- •4.2.1. Перевод целых чисел из одной системы счисления в другую
- •4.2.2. Перевод дробных чисел из одной системы счисления в другую
- •4.2.3. Понятие экономичности системы счисления
- •4.2.4. Перевод чисел между системами счисления 2 ↔ 8 ↔ 16
- •4.2.5. Преобразование нормализованных чисел
- •4.3. Кодирование чисел в компьютере и действия над ними
- •4.3.1. Кодирование и обработка в компьютере целых чисел без знака
- •4.3.2. Кодирование и обработка в компьютере целых чисел со знаком
- •4.3.3. Кодирование и обработка в компьютере вещественных чисел
- •Контрольные вопросы и задания
- •Глава 5. Передача информации
- •5.1. Общая схема передачи информации в линии связи
- •5.2. Характеристики канала связи
- •5.3. Влияние шумов на пропускную способность канала
- •5.4. Обеспечение надежности передачи и хранения информации
- •5.4.1. Постановка задачи
- •5.4.2. Коды, обнаруживающие ошибку
- •5.4.3. Коды, исправляющие одиночную ошибку
- •5.5. Способы передачи информации в компьютерных линиях связи
- •5.5.1. Канал параллельной передачи
- •5.5.2. Последовательная передача данных
- •5.5.3. Связь компьютеров по телефонным линиям
- •Контрольные вопросы и задания
- •Глава 6. Хранение информации
- •6.1. Классификация данных. Проблемы представления данных
- •6.2. Представление элементарных данных в озу
- •6.3. Структуры данных и их представление в озу
- •6.3.1. Классификация и примеры структур данных
- •6.3.2. Понятие логической записи
- •6.3.3. Организация структур данных в озу
- •6.4. Представление данных на внешних носителях
- •6.4.1. Иерархия структур данных на внешних носителях
- •6.4.2. Особенности устройств хранения информации
- •Контрольные вопросы и задания
- •Раздел 2. Алгоритмы. Модели. Системы
- •Глава 7. Элементы теории алгоритмов
- •7.1. Нестрогое определение алгоритма
- •7.2. Рекурсивные функции
- •7.3. Алгоритм как абстрактная машина
- •7.3.1. Общие подходы
- •7.3.2. Алгоритмическая машина Поста
- •7.3.3. Алгоритмическая машина Тьюринга
- •7.4. Нормальные алгоритмы Маркова
- •7.5. Сопоставление алгоритмических моделей
- •7.6. Проблема алгоритмической разрешимости
- •7.7. Сложность алгоритма
- •Контрольные вопросы и задания
- •Глава 8. Формализация представления алгоритмов
- •8.1. Формальные языки
- •8.1.1. Формальная грамматика
- •8.1.2. Способы описания формальных языков
- •8.2. Способы представления алгоритмов
- •8.2.1. Исполнитель алгоритма
- •8.2.2. Строчная словесная запись алгоритма
- •8.2.3. Графическая форма записи
- •8.2.4. Классификация способов представления алгоритмов
- •8.3. Структурная теорема
- •Контрольные вопросы и задания
- •Глава 9. Представление о конечном автомате
- •9.1. Общие подходы к описанию устройств, предназначенных для обработки дискретной информации
- •9.2. Дискретные устройства без памяти
- •9.3. Конечные автоматы
- •9.3.1. Способы задания конечного автомата
- •9.3.2. Схемы из логических элементов и задержек
- •9.3.3. Эквивалентные автоматы
- •Контрольные вопросы и задания
- •Глава 10. Модели и системы
- •10.1. Понятие модели
- •10.1.1. Общая идея моделирования
- •10.1.2. Классификация моделей
- •Модели структурные и функциональные
- •Модели натурные и информационные
- •Модели проверяемые и непроверяемые
- •Модели по назначению
- •10.1.3. Понятие математической модели
- •10.2. Понятие системы
- •10.2.1. Определение объекта
- •10.2.2. Определение системы
- •10.2.3. Формальная система
- •10.2.4. Значение формализации
- •10.3. Этапы решения задачи посредством компьютера
- •10.4. Об объектном подходе в прикладной информатике
- •Контрольные вопросы и задания
- •Заключение
- •Приложение а. Элементы теории вероятностей
- •А.1. Понятие вероятности
- •А.2. Сложение и умножение вероятностей
- •A.3. Условная вероятность
- •Контрольные вопросы и задания
- •Приложение б. Некоторые соотношения логики
- •Глоссарий
- •Список литературы
- •Содержание
- •Глава 4. Представление и обработка чисел в компьютере 45
- •Глава 5. Передача информации 69
- •Глава 6. Хранение информации 83
- •Раздел 2. Алгоритмы. Модели. Системы 98
- •Глава 7. Элементы теории алгоритмов 99
- •Глава 8. Формализация представления алгоритмов 120
- •Глава 9. Представление о конечном автомате 134
- •Глава 10. Модели и системы 147
4.2. Представление чисел в различных системах счисления
4.2.1. Перевод целых чисел из одной системы счисления в другую
Поскольку одно и то же число может быть записано в различных системах счисления, встает вопрос о переводе представления числа из одной системы (р) в другую (q) - будем обозначать такое преобразование Zp → Zq. Теоретически возможно произвести его при любых q и р. Однако подобный прямой перевод будет затруднен тем, что придется выполнять операции по правилам арифметики недесятичных систем счисления. По этой причине более удобными с практической точки зрения оказываются варианты преобразования с промежуточным переводом Zp → Zr → Zq с основанием r, для которого арифметические операции выполнить легко. Такими удобными основаниями являются r =1 и r = 10, т.е. перевод осуществляется через унарную или десятичную систему счисления.
Преобразование Zp → Z1 → Zq
Идея алгоритма перевода предельно проста: положим начальное значение Zq:= 0; из числа Zp вычтем 1 по правилам вычитания системы р, т.е. ZP: = ZP – 1* и добавим ее к Zq по правилам сложения системы q, т.е. Zq:= Zq + 1; будем повторять эту последовательность действий, пока не достигнем Zp = 0.
* Знак «:=» используется здесь и далее в смысле «присвоить» («считать равным»).
Правила сложения с 1 и вычитания 1 могут быть записаны следующим образом:
Промежуточный переход к унарной системе счисления в данном случае осуществляется неявно - используется упоминавшееся выше свойство независимости значения числа от формы его представления. Рассмотренный алгоритм перевода может быть легко реализован программным путем, в частности, машиной Тьюринга (см. п.7.3.3).
Пример 4.1
Выполнить преобразование 223 → Z6. Последовательность действий и промежуточные результаты для наглядности представим в виде таблицы:
Следовательно, 223 = 126.
Преобразование Zp → Z10 → Zq
Очевидно, первая и вторая часть преобразования не связаны друг с другом, что дает основание рассматривать их по отдельности.
Алгоритмы перевода Z10 → Zq вытекают из следующих соображений. Многочлен (4.1) для Zq может быть представлен в виде:
* Такое представление называется схемой Горнера.
где т - число разрядов в записи Zq, а bj (j = 0...m - 1) - цифры числа Zq.
Разделим число Zq
на две
части по разряду номер i;
число, включающее т
- i
разрядов
с т - 1
-го по i-й
обозначим γi,
а число с i
разрядами с i
- 1-го по
0 -й - δi.
Очевидно, i
[0, т - 1],
γ0
= δm-1
= Zq.
Позаимствуем
из языка PASCAL
обозначение
двух операций: div
-
результат
целочисленного деления двух целых чисел
и mod
- остаток
от целочисленного деления (13 div
4 = 3; 13 mod
4
=
1). Теперь
если принять γm-1
= bm.1,
то в
(4.2) усматривается следующее рекуррентное
соотношение: γi
= γi+1
∙
q
+ bi,
из которого,
в свою очередь, получаются выражения:
Аналогично, если принять δ0 = b0, то для правой части числа будет справедливо другое рекуррентное соотношение: δi = δi-1 + bi ∙qi, из которого следуют:
Из соотношении (4.3) и (4.4) непосредственно вытекают два способа перевода целых чисел из 10-ной системы счисления в систему с произвольным основанием q.
Способ 1 является следствием соотношений (4.3), из которых просматривается следующий алгоритм перевода:
целочисленно разделить исходное число (Z10) на основание новой системы счисления (q) и найти остаток от деления - это будет цифра 0-го разряда числа Zq;
частное от деления снова целочисленно разделить на q с выделением остатка; процедуру продолжать до тех пор, пока частное от деления не окажется меньше q;
образовавшиеся остатки от деления, поставленные в порядке, обратном порядку их получения, и представляют Zq.
Блок-схема алгоритма представлена на рис.4.1. Обычно его представляют в виде «лестницы».
Пример 4.2
Выполнить преобразование 12310 → Z5.
Остатки от деления (3, 4) и результат последнего целочисленного деления (4) образуют обратный порядок цифр нового числа. Следовательно, 12310 = 4435.
Необходимо заметить, что полученное число нельзя читать «четыреста сорок три», поскольку десятки, сотни, тысячи и прочие подобные обозначения чисел относятся только к десятичной системе счисления. Прочитывать число следует простым перечислением его цифр с указанием системы счисления («число четыре, четыре, три в пятиричной системе счисления»).
Способ 2 вытекает из соотношения (4.4); действия производятся в соответствии со следующим алгоритмом:
1) определить т - 1 - максимальный показатель степени в представления числа по форме (4.1) для основания q;
2) целочисленно разделить исходное число (Z10) на основание новой системы счисления в степени т - 1 (т.е. qm-1 ) и найти остаток от деления; результат деления определит первую цифру числа Zq;
3) остаток от деления целочисленно разделить на qm-2 , результат деления принять за вторую цифру нового числа; найти остаток; продолжать эту последовательность действий, пока показатель степени q не достигнет значения 0.
Продемонстрируем действие алгоритма на той же задаче, что была рассмотрена выше. Определить т - 1 можно либо путем подбора (50 = 1 < 123; 51 = 5 < 123; 52 = 25 < 123; 53 = 125 > 123, следовательно, т - 1 = 2), либо логарифмированием с оставлением целой части логарифма (log5123 = 2,99, т.е. m - 1 = 2). Далее:
Алгоритмы перевода Zp_→ Z10 явно вытекает из представлении (4.1) или (4.2): необходимо Zp представить в форме многочлена и выполнить все операции по правилам десятичной арифметики.
Пример 4.3
Выполнить преобразование 4435 → Z10
Необходимо еще раз подчеркнуть, что приведенными алгоритмами удобно пользоваться при переводе числа из десятичной системы в какую-то иную или наоборот. Они работают и для перевода между любыми иными системами счисления, однако, преобразование будет затруднено тем, что все арифметические операции необходимо осуществлять по правилам исходной (в первых алгоритмах) или конечной (в последнем алгоритме) системы счисления. По этой причине переход, например, Z3 → Z8 проще осуществить через промежуточное преобразование к 10-ной системе Z3 → Z10 → Z8.. Ситуация, однако, значительно упрощается, если основания исходной и конечной систем счисления оказываются связанными соотношением р = qr, где r - целое число (естественно, большее 1) или r = 1/п (п >1, целое) - эти случаи будут рассмотрены ниже.