![](/user_photo/2706_HbeT2.jpg)
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 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.6.6. Метод умножения с расшифровкой пар разрядов множителя и запоминанием переносов
Этот метод относится к аппаратно-логическим методам ускоренного выполнения операции умножения, и его целесообразно использовать в ЭВМ, в состав арифметического устройства которых входят комбинационный сумматор параллельного действия и регистры сдвига. Для реализации данного метода в состав арифметического устройства вводятся дополнительный регистр и вентили для хранения сдвигов и передачи переносов.
Рассматриваемый метод умножения заключается в следующем. В каждом цикле операции умножения выполняется поочередное сложение по модулю два суммы частичных произведений и множимого и образование поразрядных переносов, значения которых фиксируются в отдельном регистре. В результате этого формируются не полные, а поразрядные суммы частичных произведений и значения соответствующих переносов, коды которых составляют третье слагаемое в очередном цикле умножения. Поразрядное сложение по модулю два выполняется за время, меньшее, чем время, необходимое для формирования полной суммы, так как из последнего исключается время распространения переносов. Это и приводит к уменьшению общего времени, необходимого для выполнения операции умножения. При этом, однако, в заключительном цикле операции умножения требуется производить полное сложение последней поразрядной суммы частичных произведений с кодами переносов, сформированными при последнем поразрядном сложении.
Укрупненно алгоритм выполнения операции умножения с расшифровкой пар разрядов множителя и запоминанием переносов можно описать следующим образом.
В первом цикле умножения анализируется пара младших разрядов множителя и в зависимости от их значения (00; 01; 10; 11) формируется первое частичное произведение по изложенным в п. 2.6.3 правилам ускоренного умножения при одновременной расшифровке двух разрядов множителя. Очевидно, что в первом цикле переносы отсутствуют, то есть их коды равны нулю. Во втором цикле производится сдвиг множителя и первой суммы частичных произведений на два разряда вправо и анализируется следующая по старшинству пара разрядов множителя. Затем формируется второе частичное произведение, которое поразрядно складывается со сдвинутым на два разряда вправо первым частичным произведением. При этом формируются и фиксируются коды переносов.
В третьем цикле сдвигаются на два разряда вправо множитель, полученная поразрядная сумма частичных произведений и коды переносов. Далее анализируется следующая по старшинству пара разрядов множителя и формируется третье частичное произведение, которое поразрядно складывается со сдвинутой поразрядной суммой первых двух частичных произведений и с кодами сдвинутых переносов. При этом формируются и фиксируются очередные коды переносов.
Процесс
формирования поразрядных сумм частичных
произведений и переносов повторяется
циклов по числу разрядов сомножителей.
В заключительном
-м
цикле производится полное сложение
последней поразрядной суммы частичных
произведений с кодами переносов,
сформированными в цикле умножения
.
После этого возможно округление
результата по обычным правилам.
Пример.
Рассмотрим
пример перемножения чисел
и
по методу расшифровки пар разрядов
множителя и запоминанием переносов.
При сложении будем использовать
модифицированный дополнительный код,
который предпочтительнее обратного,
так как в последнем циклический перенос
в последующем цикле умножения может
вызвать дополнительную ошибку, равную
половине значения единицы младшего из
сохраняемых разрядов произведения. Это
может иметь место из-за потери при
сдвигах того младшего разряда, в который
должен был осуществляться циклический
перенос при выполнении в каждом цикле
полных сложений. Иллюстрирует
рассматриваемый метод представленная
в табл. 2.3 схема реализации операции умножения.
Данный результат умножения совпадает с полученным ранее в п. 2.6.3.
Время, необходимое для операции умножения рассмотренным методом в случае несовмещения по времени сдвига и суммирования, рассчитывается по формуле
,
а в случае совмещения сдвига и суммирования – по формуле
,
где
– время поразрядного сложения по модулю
два. Обычно
.
Нетрудно показать, что схема выполнения операции умножения при запоминании переносов может быть построена и для случая одновременной расшифровки нескольких пар разрядов множителя.