
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 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.8. Деление двоичных чисел с плавающей запятой
Деление чисел, представленных в двоичной форме с плавающей запятой, выполняется за четыре шага, при этом условие теряет смысл и его проверка не делается.
1. Определяется знак частного путем сложения по модулю два знаков делимого и делителя.
2. Определяется порядок частного путем вычитания порядка делителя из порядка делимого с учетом их знаков по правилам, аналогичным для вычитания чисел с фиксированной запятой.
3. Определяется мантисса частного путем деления модуля мантиссы делимого на модуль мантиссы делителя по правилам, изложенным выше, для деления чисел с фиксированной запятой.
4. Нормализуется результат деления мантисс делимого и делителя, если произошло переполнение разрядной сетки или денормализация.
5. При переполнении или денормализации мантиссы частного производится соответственно увеличение или уменьшение порядка частного вычисленного по п.2.
Пример.
Разделить в двоичной системе с плавающей запятой.
Делимое
Делитель
.
(Под
модуль мантиссы отведено четыре, а под
модуль порядка три разряда). Требуется
найти
,
т.е найти
.
Первый шаг. Определение знака частного.
.
Второй шаг. Определение порядка частного путем вычитания порядка делителя из порядка делимого с учетом их знаков в дополнительном модифицированном коде:
+
Третий шаг. Определение модуля мантиссы частного (операция выполняется в модифицированном дополнительном коде):
+
+
+
.
Произошло переполнение разрядной сетки и требуется нормализация вправо мантиссы частного, т.е. сдвиг мантиссы на один разряд вправо и увеличение порядка на единицу.
Четвертый шаг. Нормализация мантиссы частного путем сдвига ее на один разряд вправо:
.
Пятый шаг. Увеличение предварительно полученного порядка частного на единицу в модифицированном дополнительном коде:
Операция деления двух двоичных чисел с плавающей запятой завершена.
Пример.
Разделить в двоичной системе с плавающей запятой, отведя под мантиссу шесть, а под порядок три разряда.
Делимое
Делитель
Требуется
найти
,
т.е. найти
.
После нормализации операндов имеем:
Первый шаг. Определение знака частного:
Второй шаг. Определение порядка частного путем вычитания порядка делителя из порядка делимого с учетом их знаков в дополнительном модифицированном коде:
Третий шаг. Определение модуля мантиссы частного (операция выполняется в модифицированном дополнительном коде). При этом, чтобы получить шесть верных разрядов мантиссы частного, увеличим длину разрядной сетки, отводимую для выполнения операции деления мантисс, до восьми разрядов:
+
+
00,01100000
меньше модуля мантиссы делителя)
+
+
+
+
+
На
этом процесс деления модулей мантисс
заканчиваем, т.к. поставленное выше
условие выполнено – получено шесть
верных разрядов модуля мантиссы частного
.
В связи с тем, что переполнение разрядной сетки и денормализация мантиссы частного отсутствуют, получаем окончательный результат деления в следующем виде:
.