
- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Умножение в дополнительном коде
Правила умножения в дополнительном коде зависят от применяемого варианта кодирования (раздел 3.2). Примем за основу способы умножения в дополнительном коде варианта B. Правила умножения в дополнительных кодах вариантов A и C являются модификацией правил умножения в коде варианта B учитывающей особенности кодирования нуля и не числа в этих кодах.
Код произведения в дополнительном коде варианта B имеет значащих разрядов, где n – количество значащих разрядов в кодах операндов. В прямом и дополнительном коде вариантов A и C код произведения имеет 2n значащих разрядов. Это различие вызвано тем, что в дополнительном коде варианта B код 1|00…0 кодирует число меньшее минимального числа представляемого в иных кодах. Если, например,
,
то
в
любой рассматриваемой системе счисления
и имеет не
,
а
значащих разрядов. Дополнительный
старший значащий разряд произведения
содержит 1, только если коды обоих
операндов 1|000. При всех иных сочетаниях
операндов в дополнительном разряде
положительного
произведения
0, отрицательного – цифра обратная нулю.
Дополнительный код варианта C отличается от кода варианта B лишь тем, что 1|00…0 кодирует не число. При умножении в коде варианта C, если хотя бы один из операндов 1|00…0, складывается исключительная ситуация невыполнимая операция и произведение не вычисляется. Умножение операндов по правилам умножения кодов варианта B приводит к правильному результату. Но поскольку результат не может быть равным 0|100…0, то старший дополнительный разряд не вычисляют.
Дополнительный код варианта A отличается от кода варианта B тем, что 1|00…0доп кодирует (-0), а не минимальное число и произведение равное нулю может иметь разные знаки. Операнды в коде варианта A проверяют на 0. Если хотя бы один операнд равен (+0) или (-0), произведению присваивают код нуля с кодом знака равным сумме по модулю 2 кодов знака операндов. Коды операндов не равные 0|00…0доп и 1|00…0доп умножают по правилам умножения кодов варианта B. Поскольку результат не может быть равным 0|100…0, то старший дополнительный разряд не вычисляют.
При разработке способов умножения следует учитывать, что код знака произведения в дополнительном коде варианта B или C равен сумме по модулю 2 кодов знаков операндов, только если операнды не равны нулю. Знак произведения равного нулю всегда (+).
При умножении
дополнительных кодов варианта B
можно проверять операнды на коды 0|00…0д
(+0) и 1|00…0д
.
Если один из операндов 0|00…0д, то код произведения 0|00…0д.
Если оба операнда 1|00…0д, то код произведения 0|100…0д (дополнительный разряд произведения показан жирным шрифтом).
Если операнды не равны нулю и код одного из них 1|00…0д, то код произведения равен другому операнду с обратным знаком, к которому справа приписаны n нулей.
Если код произведения не равен 0|100…0д, то цифра в дополнительном разряде 0, если код знака результата 0, иначе цифра обратная нулю.
Применение этих правил позволяет вычислять только значащих разрядов произведения, перемножая сомножители с кодами не равными 0|00…0д (+0) и 1|00…0д.
П
ример
4-27. Выполняется
умножение двоичных операндов в
дополнительном коде варианта B
по приведенным выше правилам. Поскольку
,
разрядность произведения
.
В вариантах A-D вычислены все разряды произведения.
В варианте E
операнды не равны 100...0
или 000...0.
Поэтому вычислен только разряд знака
и дополнительный старший значащий
разряд, выделенный жирным шрифтом.
Остальные
значащих разрядов дополнительного кода
произведения придется вычислять,
выполняя умножение значащих разрядов
операндов.
Если код 100...0
не применяется для представления числа,
то дополнительный значащий разряд
произведения вычислять не следует, и
результат будет иметь
разрядов (в примере 4-27 9 разрядов).
Известно множество подходов к решению задачи умножения в дополнительном коде. Некоторые из них.
Преобразуем дополнительные коды операндов в прямые, перемножим прямые коды и преобразуем прямой код результата в дополнительный.
Перемножим дополнительные коды операндов по правилу умножения в прямом коде. Результат получится правильным, только если оба операнда имеют знак (+). Выполним анализ ошибок при иных комбинациях знаков и разработаем правила введения в результат корректирующих поправок для получения дополнительного кода правильного результата.
Умножение это Y–кратное сложение множимого с самим собой. Следовательно, операции сложения достаточно выполнять в дополнительном коде по правилам сложения в дополнительном коде.
Интересен подход с преобразованием множителя в другие системы счисления, например из двоичной системы, с цифрами 0 и 1, в двоичную систему с цифрами
.
Каждый подход порождает множество вариантов, если базовое решение усовершенствовать в направлении снижения трудоемкости и увеличения скорости вычислений. Кроме того, возможны комбинации некоторых подходов.