- •552800 И 654600 - Информатика и вычислительная техника
- •Введение
- •Часть 1. Информатика и современное общество
- •1. Информатизация общества и информатика
- •1.1. Информационное общество
- •1.2. Понятие информатики
- •Средства для преобразования информации
- •Часть 2. Информация, ее представление и измерение
- •2. Информация
- •2.1. Понятие и характерные черты информации
- •2.2. Классификация информации
- •2.3. Свойства информации
- •3. Сигнал как материальный носитель информации
- •3.1. Виды сигнала
- •3.2. Преобразования сигнала
- •3.3. Системы счисления
- •3.3.1. Правила перевода чисел из одной системы счисления в другую
- •3.3.1.1. Правила перевода целых чисел
- •3.3.1.2. Правила перевода правильных дробей
- •3.3.1.3. Правило перевода дробных чисел
- •3.3.2. Правила выполнения простейших арифметических действий
- •3.3.2.1. Правила сложения
- •3.3.2.2. Правила вычитания
- •3.3.2.3. Правила умножения
- •3.3.2.4. Правила деления
- •4. Кодирование дискретного сигнала
- •4.1. Кодирование по образцу
- •4.1.1. Прямые коды
- •4.1.2. Ascii-коды
- •4.1.3. Коды, учитывающие частоту информационных элементов
- •4.1.4. Коды Грея
- •4.1.5. Код Штибица
- •4.2. Криптографическое кодирование
- •4.2.1. Метод простой подстановки
- •4.2.2. Метод Вижинера
- •4.3. Эффективное кодирование
- •4.3.1. Метод Шеннона-Фано
- •4.3.2. Метод Хаффмена
- •4.3.3. Повышение эффективности кодирования
- •4.3.4. Декодирование эффективных кодов
- •4.3.5. Специальные методы эффективного кодирования
- •4.3.5.1. Методы эффективного кодирования числовых последовательностей
- •4.3.5.2. Методы эффективного кодирования словарей
- •Основной вспомогательный
- •4.3.5.3. Методы эффективного кодирования естественно-языковых текстов
- •4.4. Помехозащитное кодирование
- •4.4.1. Искажение кодовых комбинаций
- •4.4.2. Кодовое расстояние и корректирующая способность кода
- •4.4.3. Коды, исправляющие ошибки
- •5. Измерение информации
- •5.1. Структурный подход к измерению информации
- •5.1.1. Геометрическая мера
- •5.1.2. Комбинаторная мера
- •5.1.3. Аддитивная мера
- •5.2. Статистический подход к измерению информации
- •5.3. Взаимосвязь структурного и статистического подходов к измерению информации
- •5.4. Семантический подход к измерению информации
- •5.4.1. Целесообразность информации
- •5.4.2. Полезность информации
- •5.4.3. Истинность информации
- •6. Качество информации
- •Часть 3. Компьютер как основной элемент информационного процесса
- •7. Структура компьютера и принципы его функционирования
- •8. Виды современных компьютеров
- •9. Структурные элементы компьютера
- •9.1. Память
- •9.1.1. Внутренняя память
- •9.1.2. Внешняя память
- •9.1.2.1. Физическая и логическая структура магнитных дисков
- •9.2. Устройство управления
- •9.3. Арифметико-логическое устройство
- •9.3.1. Структура и принцип действия
- •9.3.2. Формы представления числовых данных
- •9.3.2.1. Формы представления целых чисел
- •9.3.2.2. Формы представления вещественных чисел
- •9.3.3. Коды представления числовых данных
- •9.3.4. Принципы выполнения арифметической операции сложения
- •9.3.4.1. Сложение целых чисел
- •9.3.4.2. Сложение вещественных чисел
- •10. Виды программного обеспечения компьютера
- •Инструментарий технологии программирования.
- •10.1. Системное программное обеспечение
- •Системное по базовое по сервисное по (утилиты) операционные системы операционные оболочки
- •10.2. Пакеты прикладных программ
- •10.3. Инструментарий технологии программирования
- •Инструментарий технологии программирования
- •11. Поколения эвм
- •12. Технология проектирования программ
- •12.1. Формализация задачи
- •12.2. Программирование задачи
- •12.2.1. Разработка алгоритма
- •12.2.1.1. Способы описания алгоритма
- •12.2.1.2. Методы проектирования алгоритмов
- •12.3. Отладка программы
- •13. Эволюция использования компьютеров. Проект эвм пятого поколения
- •Часть 4. Фазы обращения информации
- •14. Структура информационного процесса
- •15. Сбор информации
- •15.1. Методы классификации
- •15.1.1. Иерархическая классификация
- •15.1.2. Фасетная классификация
- •15.2. Методы кодирования
- •15.3. Распознавание и кодирование объектов
- •15.4. Регистрация информации
- •16. Восприятие информации
- •16.1. Сканер как устройство восприятия информации
- •16.1.1. Первичное восприятие и измерение информации
- •16.1.2. Анализ результатов первичного восприятия и измерения
- •16.1.3. Распознавание символов
- •16.2. Восприятие информации клавиатурой
- •16.2.1. Первичное восприятие и измерение
- •16.2.2. Анализ
- •16.2.3. Распознавание
- •17. Передача информации
- •17.1. Модуляция и демодуляция сигнала
- •17.2. Уплотнение сигнала и выделение уплотненного сигнала
- •17.4. Компьютерные сети
- •17.4.1. Топология сетей
- •17.4.2. Методы передачи данных в сетях
- •17.4.3. Организация обмена информацией в сети
- •18. Обработка информации
- •19. Представление информации
- •19.1. Устройства вывода на электронный носитель
- •19.1.1. Мониторы, использующие элт
- •19.1.2. Жидкокристаллические мониторы
- •19.1.3. Плазменные мониторы
- •19.1.4. Технология вывода изображений на мониторы, использующие элт
- •19.1.4.1. Принципы организации текстовых видеорежимов
- •19.1.4.2. Принципы организации графических видеорежимов
- •19.2. Устройства вывода на бумажный носитель
- •19.2.1. Технология формирования цвета
- •19.2.2. Матричные принтеры
- •19.2.3. Струйная технология
- •19.2.4. Термическая технология
- •19.2.5. Электрографическая технология
- •Приложение 1. Определения информатики
- •Приложение 2. Определения информации
- •Приложение 3. Положения комбинаторики, используемые в измерении информации
- •Список литературы
- •Оглавление
- •Часть 1. Информатика и современное общество 6
- •Часть 2. Информация, ее представление и измерение 11
- •Часть 3. Компьютер как основной элемент информационного процесса 81
- •Часть 4. Фазы обращения информации 154
9.3.3. Коды представления числовых данных
Для представления данных числовых типов существуют специальные коды, которые призваны облегчить выполнение арифметических операций (см. п. 9.3.4):
-
прямой код есть двоичный эквивалент числа;
-
обратный код строится только для отрицательного числа -х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение обратного кода для х (обозначим х) определяется по формуле:
х = 2n – х – 1. (9.2)
Эт.е. преобразованный прямой код, в котором все числовые разряды инвертируются, т.е. 1 преобразуются в 0, 0 превращается в 1;
-
дополнительный код строится только для отрицательного числа –х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение дополнительного кода для х (обозначим х) определяется по формуле:
х = 2n – х. (9.3)
Эт.е. преобразованный обратный код, к которому прибавляется 1.
Очевидно, в силу (9.2) и (9.3) верно следующее:
х + х = 2n –1. (9.4)
Последнее соотношение есть формальное определение взаимно дополнительных пар чисел. Оно позволяет быстро получить значение обратного кода для любого числа с помощью кодовых таблиц Штибица (см. ранее в п. 4.1.4). Рассмотрим эту задачу для десятичных цифр.
В табл. 9.3. приведены прямые, обратные, дополнительные коды, полученные по формулам (9.2) и (9.3) при n = 4, а также коды Штибица для десяти десятичных цифр.
Таблица 9.3
Десятичная цифра |
Прямой код |
Обратный код |
Дополнительный код10 |
Код Штибица |
0 |
0000 |
1111 |
0000 |
0011 |
1 |
0001 |
1110 |
1111 |
0100 |
2 |
0010 |
1101 |
1110 |
0101 |
3 |
0011 |
1100 |
1101 |
0110 |
4 |
0100 |
1011 |
1100 |
0111 |
5 |
0101 |
1010 |
1011 |
1000 |
6 |
0110 |
1001 |
1010 |
1001 |
7 |
0111 |
1000 |
1001 |
1010 |
8 |
1000 |
0111 |
1000 |
1011 |
9 |
1001 |
0110 |
0111 |
1100 |
Зададимся кодом Штибица, равным 1000. Его целочисленный эквивалент равен 8 (напомним, что это коды со сдвигом на 3). Второе двоичное число, составляющее взаимно дополнительную пару чисел с числом 1000, есть 0111. Это и есть обратный код для числа 8 (см. для анализа табл. 9.3).
9.3.4. Принципы выполнения арифметической операции сложения
В основе выполнения всех простейших арифметических действий лежит операция сложения. Рассмотрим ее выполнение для целых и вещественных чисел.
9.3.4.1. Сложение целых чисел
Последовательность шагов при этом следующая:
-
слагаемые размещаются в разрядных сетках (см. п. 9.3.2.1) в прямых кодах;
-
отрицательное слагаемое (или слагаемые) преобразуется в обратный или дополнительный код (в зависимости от того, в какой форме выполняет операции АЛУ);
-
слагаемые складываются по правилам сложения двоичных чисел. При этом знаковые разряды участвуют в вычислениях наряду с числовыми;
-
единица переноса из знакового разряда (если таковая возникнет) отбрасывается при сложении в дополнительном коде или прибавляется к младшему числовому разряду при сложении в обратном коде;
-
если результат положителен – он представлен в прямом коде и не требует никаких преобразований. Если результат отрицателен, то он представлен в обратном или дополнительном коде в зависимости от того, в каком коде происходило сложение. Результат в таком случае преобразуется в прямой код.
Пример 9.8. Сложить в обратном коде числа –34 и +15. Разрядная сетка – 8 бит.
-
преобразуем слагаемые в прямые коды и разместим их в разрядных сетках. Имеем:
-34 = -1000102
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
+15 = +11112
(9.5) (9.6) |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
-
преобразуем отрицательное слагаемое в обратный код. Имеем:
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
-
складываем слагаемые из (9.5) и (9.6). Имеем:
слагаемые |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
результат |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
-
единица переноса не образована;
-
судя по знаку, результат отрицателен, значит, представлен в обратном коде (поскольку сложение выполнялось в этом коде) и требует перевода в прямой код. Имеем:
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
Таким образом, получено число –100112. Для проверки правильности результата представим его в десятичной системе счисления. Имеем: -100112 = -19, что соответствует правильному результату.
Пример 9.9. Сложить в обратном коде числа –34 и -15. Разрядная сетка – 8 бит.
-
преобразуем слагаемые в прямые коды и разместим их в разрядных сетках. Имеем:
-
(9.7)
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
-15 = -11112
(9.8) |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
-
преобразуем отрицательные слагаемые в обратный код. Имеем:
д
(9.9)
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
д
(9.10)
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
-
складываем слагаемые из (9.9) и (9.10). Имеем:
слагаемые |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
результат
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
единица переноса из знакового разряда
-
образовалась единица переноса из знакового разряда. В соответствии с правилами сложения в обратном коде, она прибавляется к младшему числовому разряду.
Имеем:
результат
единица
переноса
|
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
окончательный
результат
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
-
судя по знаку, результат отрицателен, значит, представлен в обратном коде (поскольку сложение выполнялось в этом коде) и требует перевода в прямой код. Имеем:
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Таким образом, получено число –1100012. Для проверки правильности результата представим его в десятичной системе счисления. Имеем: -1100012 = -49, что соответствует правильному результату.
Пример 9.10. Сложить в дополнительном коде числа –34 и -15. Разрядная сетка – 8 бит.
Первый этап совпадает с предыдущим примером.
Преобразуем слагаемые в дополнительный код. Для этого воспользуемся обратными кодами из (9.9) и (9.10). Имеем:
для (9.9)
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
для (9.10)
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
С
1
(9.11) |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
единица переноса из знакового разряда
Поскольку сложение выполняется в дополнительном коде, единица переноса из знакового разряда теряется. Таким образом, (9.11) – результат сложения в дополнительном коде. Поскольку он отрицателен, преобразуем его в прямой код. Тогда имеем:
результат
из (9.11) |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
обратный
код результата
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
прямой
код результата
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Как видно, результат совпадает с результатом из примера 9.9, т.е. является правильным.
При сложении в обратном или дополнительном коде возникают ситуации переполнения.
Пример 9.11. Сложить в обратном коде числа –64 и -67. Разрядная сетка – 8 бит.
После перевода чисел в двоичную систему счисления и размещения в разрядной сетке полученных прямых кодов имеем:
для -64
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
для -67
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
После перевода обоих слагаемых в обратный код и сложения имеем:
слагаемые |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
результат
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
единица переноса из знакового разряда
После сложения единицы переноса имеем окончательный результат:
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
Анализ показывает, что результат положительный, что противоречит исходным данным: складывались два отрицательных числа. Это свидетельствует о переполнении (overflow) разрядной сетки.
Таким образом, формальным признаком переполнения разрядной сетки при выполнении операции сложения является то, что знак результата отличается от знаков слагаемых. Такая ситуация может возникнуть только при сложении чисел с одинаковыми знаками. С подобными ситуациями при сложении целых чисел самостоятельно компьютер не справляется, требуется вмешательство программиста.