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