- •Основы компьютерной арифметики и логики
- •Предисловие
- •Глава 4, подготовленная доцентом о.П. Шафеевой, посвящена вопросам разработки алгоритмических моделей выполнения арифметических операций и моделирования на пэвм спроектированных алгоритмов.
- •Основы двоичной компьютерной арифметики
- •1.1. Позиционные системы счисления
- •Десятичная позиционная система счисления
- •Двоичная позиционная система счисления
- •1.1.3. Восьмеричная позиционная система счисления
- •1.1.4. Шестнадцатеричная позиционная система счисления
- •Сложение Вычитание
- •Перевод чисел из одной позиционной системы счисления в другую
- •1.2.1. Перевод целых чисел
- •1.2.2. Перевод правильных дробей
- •1.2.3. Перевод неправильных дробей из одной системы счисления в другую
- •1.2.4. Частный случай перевода чисел из одной системы счисления в другую
- •1.2.5. Перевод чисел из одной системы счисления в другую с использованием промежуточной двоично-десятичной системы
- •1.3. Представление чисел с фиксированной запятой (точкой)
- •1.4. Представление чисел с плавающей запятой (точкой)
- •1.5. Коды двоичных чисел
- •1.5.1. Прямой код
- •1.5.2. Обратный код
- •1.5.3. Модифицированный обратный код
- •1.5.4. Дополнительный код
- •2.1.1. Алгебраическое сложение чисел в дополнительном коде
- •2.1.2. Алгебраическое сложение чисел в обратном коде
- •2.1.3. Переполнение разрядной сетки при сложении чисел
- •2.2. Сложение (вычитание) двоичных чисел с плавающей запятой
- •2.2.1. Метод ускоренного сложения двоичных чисел с запоминанием переносов
- •2.3. Умножение двоичных чисел с фиксированной запятой
- •2.4. Машинные технологии выполнения операции умножения двоичных чисел с фиксированной запятой
- •2.5. Умножение двоичных чисел с плавающей запятой
- •2.6. Методы ускоренного выполнения операции умножения двоичных чисел
- •2.6.1. Метод пропуска такта суммирования
- •2.6.2. Метод анализа сомножителей
- •2.6.3. Метод расшифровки и одновременного умножения на два разряда множителя
- •2.6.4. Метод ускоренного умножения Мак-Сорли
- •2.6.5. Метод ускоренного умножения Лемана
- •2.6.6. Метод умножения с расшифровкой пар разрядов множителя и запоминанием переносов
- •2.7. Деление двоичных чисел с фиксированной запятой
- •2.8. Деление двоичных чисел с плавающей запятой
- •3. Основы десятичной компьютерной арифметики
- •3.1. Машинное кодирование десятичных чисел
- •3.2. Выполнение арифметических операций с десятичными числами
- •3.2.1. Сложение десятичных чисел в эвм
- •3.2.2. Умножение десятичных чисел в эвм
- •3.2.3. Ускорение умножения в -кодах
- •Деление десятичных чисел в эвм
- •4.2. Моделирование алгоритма сложения двоичных чисел
- •Различные случаи ненормализованных мантисс
- •4.3. Проектирование алгоритма умножения чисел
- •4.5. Проектирование алгоритма деления чисел
- •4.7. Разработка алгоритма вычисления квадратного корня
- •Определение 1. Пусть и произвольные множества. Соответствием называется тройка множеств
- •Свойства отношений
- •Эквивалентность
- •Толерантность
- •Отношения порядка
- •Самодвойственные функции
- •Монотонные функции
- •Линейные функции
- •Функции, сохраняющие константу
- •5.2.7. Минимизация булевых функций
- •Метод Блейка
- •Метод Квайна-Мак-Класки
- •Минимизация с использованием карт Карно
- •Дана функция четырех переменных (рис. 5.13):
- •Минимизация не полностью определенных булевых функций
- •Минимизация систем булевых функций
- •5.3. Методика синтеза комбинационных схем на логических элементах
- •5.3.1. Логические элементы
- •5.3.2. Общий алгоритм построения комбинационных схем
- •5.3.3. Синтез кс в классическом базисе
- •5.3.4. Синтез кс в базисах «и-не», «или-не»
- •5.3.5. Реализация кс в базисе Жегалкина
- •5.3.6. Синтез составных кс
- •Заключение
- •Библиографический список к главам 1, 2, 3, 4
- •Библиографический список к главе 5
4.2. Моделирование алгоритма сложения двоичных чисел
Числа в ЭВМ могут быть представлены в форме с фиксированной запятой или в форме с плавающей запятой [5].
Для сложения чисел с фиксированной запятой надо лишь выполнить поразрядное сложение в двоичной системе счисления с учетом переносов.
При сложении чисел одинакового знака может произойти переполнение разрядной сетки. Для его выявления в знаковую часть изображения числа вводится вспомогательный разряд, называемый разрядом переполнения. Такое представление числа называется модифицированным. Если значения знаковых разрядов числа в модифицированном коде не совпадают (зн[1] ≠ зн[2]), то делают вывод о переполнении.
Если переполнение разрядной сетки возникло при сложении чисел с плавающей запятой, то производится нормализация числа вправо. Нормализация производится также в том случае, если модуль мантиссы меньше ½, но число при этом нормализуется влево. Различные случаи ненормализованных мантисс приведены в табл. 4.1.
Таблица 4.1
Различные случаи ненормализованных мантисс
Разряды мантиссы |
Величина мантиссы |
Действия, выполняемые для нормализации результата |
01, хх…х |
Мантисса больше либо равна единице |
Сдвиг мантиссы вправо на один разряд, увеличение порядка на единицу |
10, хх…х |
||
00,00…0хх…х
k - разрядов |
Модуль мантиссы меньше 1/2 |
Сдвиг мантиссы влево на k разрядов, уменьшение порядка на k единиц |
11,11…1хх…х
k – разрядов |
Схема алгоритма сложения чисел с плавающей запятой представлена на рис. 4.2. В ней использованы обозначения: n - количество разрядов мантиссы, k – число разрядов порядка, М1, М2 – мантиссы и Р1, Р2 - порядки чисел.
Рис. 4.2. Схема алгоритма сложения чисел с плавающей запятой
Рис. 4.2. Схема алгоритма сложения чисел с плавающей запятой
(окончание)
Сложение мантисс выполняется на сумматоре мантисс SmM и возможно только при одинаковых порядках чисел. В связи с этим сначала нужно выровнять порядки, для чего на сумматоре порядков SmP определяется разность Δ Р = Р1 – Р2. Если ΔР = 0, то порядки равны (P1 = Р2) и возможно сложение мантисс. При ΔР>0 первое число больше второго, и мантисса второго числа должна быть сдвинута на ΔР разрядов вправо. В случае ΔР<0 второе число больше первого. Следовательно, для выравнивания порядков необходимо сдвинуть на |ΔР| разрядов вправо мантиссу первого числа. Если |ΔР| превосходит количество цифровых разрядов, то в качестве результата операции сложения принимается большее число.
При нахождении разности порядков может иметь место переполнение результата (SmP). Если переполнение положительное, то в качестве результата сложения должен быть принят первый операнд. Отрицательное переполнение сумматора порядков свидетельствует о том, что в качестве результата сложения должен быть принят второй операнд.
После выполнения сложения мантисс может получиться денормализованный результат. При нормализации результата меняется величина порядка. Также может иметь место переполнение сумматора порядков. В случае положительного переполнения результат считается бесконечностью, знак которой определяется знаком мантиссы. При отрицательном переполнении сумматора порядков считается, что получен бесконечно малый результат, заведомо отличный от нуля, если мантисса не равна нулю.
Поскольку при выравнивании порядков мантисса меньшего из чисел сдвигается вправо, то имеет место потеря ее цифровых разрядов. В этом случае сумма чисел получается с недостатком, и для исключения накопления ошибок вычислений производится округление, для чего в сумматор вводится дополнительный младший разряд, к которому после выполнения операции сложения добавляется единица.