- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 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. Разработка алгоритма вычисления квадратного корня
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
3.2.3. Ускорение умножения в -кодах
С
целью ускорения выполнения операции
умножения десятичных чисел для цифр
множителя от 6 до 9 удобнее и быстрее
вместо сложения множимого производить
его вычитание столько раз, сколько
единиц содержится в дополнении
соответствующей цифры множителя до 10.
При такой замене сложения вычитанием
к цифре следующего старшего разряда
множителя добавляется единица. Вычитание
реализуется в виде прибавления дополнения
множимого до
к предшествующей сумме частичных
произведений.
Пример.
Вычислить
десятичное произведение
ускоренным методом при
.
Для простоты и наглядности вначале операции будем производить в десятичной системе счисления.
На
основании вышеизложенного вместо
непосредственного умножения
на 82 будем умножать множимое на множитель
,
где подчеркнутая снизу цифра рассматривается
как отрицательная.
Сумматор Множитель Операции в
И
сходное
состояние Y
= 1 2
2 счетчике
с
+
Множимое X=0120 0 1 2 0 0 2 – 1 = 1
+
0 1 2 0 0 1 – 1 = 0
1
+
сдвиг 0 0 2 4 0
[X]доп. 9 8 8 0 0 – 2 + 1 = – 1
+
[X]доп.
9 8 8 0 0 – 1 + 1 = 0
1
сдвиг 9 9 7 8 4
X = 01200 0 1 2 0 0 1 – 1 = 0
0
0 9 8 4
Произведение = 0 0 9 8 4.
Произведение сформировалось в прямом коде, так как имеет место
перенос из старшего десятичного разряда.
Из приведенного примера вытекает следующее правило: множимое или его дополнение прибавляется к текущей сумме частичных произведений до тех пор, пока очередная цифра множителя не будет сведена к нулю.
Пример.
Рассмотрим
теперь реализацию в
-кодах
разработанного выше примера умножения
при
,
помня при этом алгоритмы выполнения
операции сложения чисел с одинаковыми
и разными знаками.
Сумматор Множитель Операции
Y=82
1 2
2 в счетчике
И
сходное
состояние СМ 0000 0000 0000 0000 0000 2–1=1
[
01200]
0110 0111 1000 0110 0110
0110 0111 1000 0110 0110
к оррекция 1010 1010 1010 1010 1010
[01200] 0000 0001 0010 0000 0000
[
01200]
0110 0111 1000 0110 0110 1–1=0
0110 1000 1010 0110 0110
к
оррекция
1010 1010 1010 1010 1010
[
1
0000 0000 0010 0100 0000
[
01200]
1111 1110 1110 0000 0000 2
+1=1
1111
1111 0000 0100 0000
к оррекция 1010 1010 0000 0000 0000
[99040]
1001 1001 0000 0100 0000
[
01200]
1111 1110 1110 0000 0000
1 +1=0
1001 0111 1110 0100 0000
к оррекция 0000 0000 1010 0000 0000
[
1
1001 0111 1000 0100 0000
1001 1001 0111 1000 0100
[ 01200] 0110 0111 1000 0110 0110 1–1=0
0000 0000 1111 1110 1010
к
оррекция
0000 0000 1010 1010 1010
0000 0000 1001 1000 0100
Z = 0 0 9 8 4
