
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 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. Дополнительный код
- •1.5.5. Модифицированный дополнительный код
- •2. Выполнение арифметических операций с двоичными числами
- •2.1. Сложение (вычитание) двоичных чисел с фиксированной запятой
- •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. Алгоритмические модели выполнения арифметических операций
- •4.1. Проектирование универсального алгоритма перевода чисел в разные системы счисления
- •4.2. Моделирование алгоритма сложения двоичных чисел
- •Различные случаи ненормализованных мантисс
- •4.3. Проектирование алгоритма умножения чисел
- •4.5. Проектирование алгоритма деления чисел
- •4.7. Разработка алгоритма вычисления квадратного корня
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
2.2.1. Метод ускоренного сложения двоичных чисел с запоминанием переносов
Для
минимизации времени сложения при
выполнении операций, требующих ряда
последовательных суммирований большого
количества чисел, в ряде случаев
используют параллельные сумматоры с
запоминанием переноса. В подобных
сумматорах сложение выполняется как
разрядная операция с запоминанием
поразрядного значения суммы Siп
.
Возникающие при этом в процессе
последовательных сложений единичные
сигналы переноса
не распространяются по сумматору, а
запоминаются в отдельном регистре
переносов РП.
Процесс ускоренного сложения с запоминанием переносов группы чисел состоит из ряда циклов по числу слагаемых. В каждом цикле, за исключением
последнего
-го,
производится поразрядное сложение и
формирование переносов трех чисел:
очередного слагаемого, поразрядной
суммы от предшествовавших сложений и
значение переноса, сформированного в
предшествующем цикле сложения.
Образующиеся при этом новое поразрядное
значение суммы и значение переноса
запоминаются и в следующем цикле сложения
суммируются с очередным слагаемым
аналогичным образом. Для завершения
выполнения сложения и получения
окончательного результата (полной
суммы) необходимо в последнем цикле
выполнить операцию полного сложения с
учетом распространения переноса,
например, по цепи сквозного переноса.
Для
иллюстрации описанного метода рассмотрим
пример сложения четырех чисел
с
запоминанием
переноса
(табл. 2.1).
В последнем цикле вычисления суммы включается цепь переноса, по которой осуществляются межразрядные связи в сумматоре и формируется окончательный результат.
Таблица 2.1
|
Регистр переносов РП |
Сумматор |
|
Слагаемые
|
Запоминаемый
перенос
|
Формирование поразрядной суммы Siп |
Примечание |
0 0 1 0 1 0 1 0 |
0 0 0 0 0 0 0 0 |
0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 |
S
цикл 1
Х1 П0 |
0 0 0 1 1 0 1 0 |
0 0 0 0 0 0 0 0 |
0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 |
S
цикл 2 Х2 П1 |
0 0 1 1 0 0 1 1 |
0 0 0 1 0 1 0 0 |
0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 |
S
цикл 3 Х3 П2 |
0 0 1 0 0 1 0 1 |
0 1 1 0 0 0 0 0 |
0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 |
S
цикл 4 Х4 П3 |
0 0 0 0 0 0 0 0 |
0 1 0 0 1 0 1 0 |
0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 |
S
цикл 5 0 сложение П4 с учетом переносов |
|
|
1 0 0 1 1 1 0 0 |
окончательный результат сложения |
Из рассмотренного примера ясно, что использование принципа поразрядного сложения с запоминанием переносов при суммировании большого массива цифр, как это имеет место при выполнении экономических расчетов, операции умножения и деления, позволяет значительно сократить общее время суммирования за счет исключения времени на распространение переноса.