- •Информация
- •Свойства информации
- •Преобразования сигнала
- •Системы счисления
- •Перевод из двоичной и шестнадцатеричной систем счисления в десятичную.
- •Перевод из двоичной системы счисления в шестнадцатеричную:
- •Правила вычитания
- •Правила умножения
- •Кодирование сигнала
- •Сложение по модулю
- •Ascii-коды
- •Коды Грея
- •Коды, учитывающие частоту символов
- •Код Штибица
- •Метод Вижинера
- •Метод Шеннона-Фано
- •Метод Хаффмена
- •Декодирование эффективных кодов
- •Методы эффективного кодирования словарей
- •Кодовое расстояние и корректирующая способность кода
- •Обнаружение ошибки
- •Коды, исправляющие ошибки
- •Комбинаторная мера
- •Аддитивная мера
- •Статистический подход к измерению информации
- •Полезность информации
- •Истинность информации
- •Виды современных компьютеров
- •Персональные компьютеры
- •Устройство управления
- •Арифметико-логическое устройство
- •Формы представления вещественных чисел
- •Коды представления числовых данных в алу
- •Сложение вещественных чисел
- •Поскольку старший числовой разряд мантиссы равен 0, она требует нормализации. Для этого:
- •Офисные пакеты
- •Настольные издательские системы
- •Системы автоматизации проектирования (сапр)
- •Инструментарий технологии программирования
- •Первое поколение эвм
- •Второе поколение эвм
- •Третье поколение эвм
- •Четвертое поколение эвм
- •Технология проектирования программ
- •Формализация задачи
- •Структурно-стилизованный способ
- •Операторный язык
- •Команда комментарии
- •Методы проектирования алгоритмов
- •Модуль Ввод и размещение
- •Модуль Ввод и анализ
- •Модуль Упорядочение
- •Модуль Определение
- •Лексический анализ
- •Синтаксический анализ
- •Семантический анализ
- •Генерация промежуточного кода
- •Оптимизация промежуточного кода
- •Компоновка
- •Выполнение и тестирование программы
- •Эволюция использования компьютеров. Проект эвм пятого поколения
- •Структура информационного процесса
- •Сбор информации
- •Первичное восприятие информации
- •Методы классификации
- •Иерархическая классификация
- •Фасетная классификация
- •Распознавание и кодирование объектов
- •Регистрация информации
- •Запись информации оператором
- •Контроль правильности записи данных
- •Первичное восприятие и измерение информации
- •Анализ результатов первичного восприятия и измерения
- •Распознавание символов
- •Восприятие информации клавиатурой
- •Первичное восприятие и измерение
- •Компьютерные сети
- •Топология сетей
- •Методы передачи данных в сетях
- •Организация обмена информацией в сети
- •Обработка информации
- •Хранение информации
- •Операции над данными
- •Линейные списки
- •Блочный способ
- •Двоичный способ
- •Индексно-последовательный способ
- •Индексно-произвольный способ
- •Размещение элементов в упорядоченном списке
- •Исходный список представлен таблицей 11:
- •Рандомизация
- •Фамилия (ключ) Числовое значение ключа
- •3) Формирование реальных номеров бакетов. Для определения константы с выполним следующие вычисления:
- •Метод квадратов. Распределение элементов по бакетам показано в таблице 20:
- •Сдвиг разрядов. Распределение элементов по бакетам показано в таблице 21:
- •Метод складывания. Распределение элементов по бакетам показано в таблице 22:
- •Оптимизированные цепочки элементов
- •Инвертированные списки
- •Иерархические структуры
- •Множественные ссылки на порожденные элементы
- •Ссылки на подобные и порожденные элементы
- •Кольцевые структуры
- •Справочники
- •Битовые отображения
- •Сетевые структуры
- •Множественные ссылки на порожденные элементы
- •Кольцевые структуры
- •Справочники
- •Битовые отображения
- •Жидкокристаллические мониторы
- •Плазменные мониторы
- •Технология вывода изображений на мониторы, использующие элт
- •Принципы организации текстовых видеорежимов
- •Принципы организации графических видеорежимов
- •Манипуляторы курсора
- •Механическая мышь
- •Устройства вывода на бумажный носитель
- •Матричные принтеры
- •Струйная технология
- •Термическая технология
- •Электрографическая технология
- •Технология формирования цвета
Коды представления числовых данных в алу
Для представления данных числовых типов существуют специальные коды, которые призваны облегчить выполнение арифметических операций:
прямой код есть двоичный эквивалент числа;
обратный код строится только для отрицательного числа -х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение обратного кода для х (обозначим \х) определяется по формуле:
\х = 2n – х – 1.
Это преобразованный прямой код, в котором все числовые разряды инвертируются, т.е. 1 преобразуются в 0, 0 превращается в 1;
дополнительный код строится только для отрицательного числа –х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение дополнительного кода для х (обозначим /х) определяется по формуле:
/х = 2n – х.
Это есть преобразованный обратный код, к которому прибавляется 1.
Очевидно, в силу приведенных выше формул верно следующее:
х + \х = 2n –1.
Последнее соотношение есть формальное определение взаимно дополнительных пар чисел. Оно позволяет быстро получить значение обратного кода для любого числа с помощью кодовых таблиц Штибица. Рассмотрим эту задачу для десятичных цифр.
В таблице приведены прямые, обратные, дополнительные коды, полученные по приведенным формулам при n = 4, а также коды Штибица для десяти десятичных цифр:
Десятичная цифра |
Прямой код |
Обратный код |
Дополнительный код |
Код Штибица |
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 (см. для анализа таблицу).
Принципы выполнения арифметической операции сложения в АЛУ
В основе выполнения всех простейших арифметических действий лежит операция сложения. Рассмотрим ее выполнение для целых и вещественных чисел.
Сложение целых чисел
Последовательность шагов при этом следующая:
слагаемые размещаются в разрядных сетках в прямых кодах;
отрицательное слагаемое (или слагаемые) преобразуется в обратный или дополнительный код (в зависимости от того, в какой форме выполняет операции АЛУ);
слагаемые складываются по правилам сложения двоичных чисел. При этом знаковые разряды участвуют в вычислениях наряду с числовыми;
единица переноса из знакового разряда (если таковая возникнет) отбрасывается при сложении в дополнительном коде или прибавляется к младшему числовому разряду при сложении в обратном коде;
если результат положителен – он представлен в прямом коде и не требует никаких преобразований. Если результат отрицателен, то он представлен в обратном или дополнительном коде в зависимости от того, в каком коде происходило сложение. Результат в таком случае преобразуется в прямой код.
Пример 1. Сложить в обратном коде числа –34 и +15. Разрядная сетка – 8 бит.
преобразуем слагаемые в прямые коды и разместим их в разрядных сетках:
-34 = -1000102
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
+15 = +11112
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
преобразуем отрицательное слагаемое -34 в обратный код:
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
складываем слагаемые:
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
⇓
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
единица переноса не образована;
судя по знаку, результат отрицателен, значит, представлен в обратном коде (поскольку сложение выполнялось в этом коде) и требует перевода в прямой код:
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
Таким образом, получено число –100112. Для проверки правильности результата представим его в десятичной системе счисления. Имеем: -100112 = -19, что соответствует правильному результату.
Пример 2. Сложить в обратном коде числа –34 и -15. Разрядная сетка – 8 бит.
преобразуем слагаемые в прямые коды и разместим их в разрядных сетках:
-34 = -1000102
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
-15 = -11112
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
преобразуем отрицательные слагаемые в обратный код:
для -34
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
для -15
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
складываем слагаемые:
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
⇓
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1
образовалась единица переноса из знакового разряда. В соответствии с правилами сложения в обратном коде, она прибавляется к младшему числовому разряду:
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, что соответствует правильному результату.
Пример 3. Сложить в дополнительном коде числа –34 и -15. Разрядная сетка – 8 бит.
Первый этап совпадает с предыдущим примером.
Преобразуем слагаемые в дополнительный код. Для этого воспользуемся обратными кодами из примера 2:
для -34
1 |
1 |
0 |
1 |
1 |
1 |
1 |
9 |
для -15
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
Складываем эти слагаемые и имеем результат:
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1
Образовалась единица переноса из знакового разряда. Однако, поскольку сложение выполняется в дополнительном коде, единица переноса из знакового разряда теряется.
Таким образом, мы получили результат сложения в дополнительном коде. Поскольку он отрицателен, преобразуем его в прямой код. Тогда имеем:
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
⇓ в обратный код
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
⇓ в прямой код
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Как видно, результат совпадает с результатом из примера 2, т.е. является правильным.
При сложении в обратном или дополнительном коде возникают ситуации переполнения.
Пример 4. Сложить в обратном коде числа –64 и -67. Разрядная сетка – 8 бит.
После перевода чисел в двоичную систему счисления и размещения в разрядной сетке полученных прямых кодов имеем:
для -64
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
для -67
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
После перевода обоих слагаемых в обратный код и сложения имеем:
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
|
⇓
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1
Образовалась единица переноса из знакового разряда.
После сложения единицы переноса имеем окончательный результат:
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
Анализ показывает, что результат положительный, что противоречит исходным данным: складывались два отрицательных числа. Это свидетельствует о переполнении (overflow) разрядной сетки.
Таким образом, формальным признаком переполнения разрядной сетки при выполнении операции сложения является то, что знак результата отличается от знаков слагаемых. Такая ситуация может возникнуть только при сложении чисел с одинаковыми знаками. С подобными ситуациями при сложении целых чисел самостоятельно компьютер не справляется, требуется вмешательство программиста.
