
- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Умножение с преобразованием операндов в прямой код и произведения в дополнительный
Справедливость этой схемы вычислений очевидна. Остановимся лишь на некоторых особенностях и возможностях ее упрощения.
Применим правила вычисления произведения, описанные в разделе 4.4.2. Тогда задача сводится к вычислению значащих разрядов произведения, причем коды значащих разрядов операндов не равны 00…0.
Для вычисления младших разрядов прямого кода произведения операнды преобразуем в прямой код и перемножим их значащие разряды. Если знак произведения (–), заменим значащих разрядов произведения их дополнением для получения результата в дополнительном коде.
Пример 4-28. Выполняется умножение двоичных операндов в дополнительном коде варианта B с преобразованием операндов в прямой код и произведения в дополнительный.
В примере код
1|00…0доп
применяется для кодирования числа
.
Разряд знака и дополнительный старший
разряд результата, выделенные жирным
шрифтом, определены по отдельным
правилам.
О
братите
внимание, что фактически перемножаются
модули операндов X
и Y.
П
ример
4-29. Операнды
представлены в дополнительном десятичном
коде и код 1|00...0доп
не используется для представления числа
.
Поэтому старший дополнительный значащий
разряд отсутствует, и при преобразовании
в прямой код разрядность операндов не
расширяется. Выполняется проверка
операндов на 0. Поэтому знак произведения
не равного 0 равен сумме по модулю 2
разрядов знака операндов.
Во всех вариантах примера вычислен прямой код значащих разрядов операндов, и матрицы частных произведений построены по тому же принципу, что и в примере 4-26 вариант D. Прямой код значащих разрядов произведения преобразован в дополнительный код с учетом знака произведения.
Вариант D демонстрирует, как будет вычислен ошибочный результат, если применить изложенные правила к кодам операндов 100...0 доп.
Преобразование
операндов в прямой код и результата в
дополнительный требует затрат времени
только при отрицательном значении
преобразуемого кода. Если знак исходного
кода (+), то результат преобразования
уже известен. Так как длина кода
произведения вдвое
превышает длину операндов, то затраты
на преобразование
кода произведения примерно вдвое больше
затрат на преобразование операнда, т.е.
.
Никогда не приходится выполнять
преобразование двух операндов и
результата, так как если оба операнда
отрицательные, то произведение
положительное.
В
Таблица 4.4
Знаки операндов
X,
Y и
результата Z
Затраты времени
на преобразование
X
Y
Z
+
+
+
0
+
–
–
–
+
–
–
–
+
2
Если принять, что
знаки операндов независимые и
равновероятные, то в среднем затраты
времени на преобразования составят
.
Преобразование
операндов в прямой код можно частично
совместить с вычислением суммы частных
произведений. Для этого можно заменить
значащие цифры отрицательных операндов
обратными и выполнить умножение значащих
разрядов. После замены цифр код значащих
разрядов переменной
равен
,
так как для получения значения
к нему достаточно прибавить 1. Например,
пусть
.
После замены значащих цифр обратными
получим
.
Умножение значащих цифр после преобразования операндов X и Y приведет к вычислению:
(4-04)
Чтобы получить
прямой код значащих разрядов произведения
т.е.
,
достаточно в процессе сложения строк
матрицы частных произведений прибавить:
при
(4-05)
при
(4-06)
при
(4-07)
П
ример
4-30. Операнды
в дополнительном двоичном коде и код
1|00...0доп
используется для представления числа
.
Разряды знака и дополнительный старший
значащий разряд дополнительного кода
произведения вычислены по отдельным
правилам и показаны во всех вариантах
примера жирным шрифтом.
В варианте A оба операнда отрицательные. Поэтому значащие цифры сомножителей заменены обратными. В матрицу частных произведений в соответствии с выражением (4-07) введены дополнительные слагаемые и 1, показанные жирным шрифтом. Так как знак произведения (+), то вычисленное произведение модулей операндов скопировано в соответствующие разряды результата.
В вариантах B и C один из операндов отрицательный. Его значащие цифры заменены обратными. В варианте B в соответствии с выражением (4-06) в матрицу частных произведений введено слагаемое , а в варианте C в соответствии с выражением (4-05) введено слагаемое . Так как знак произведения (–), то к разрядам знака и к дополнительному старшему разряду результата приписано дополнение произведения модулей операндов до веса старшего дополнительного разряда.
В варианте D оба операнда положительные. Поэтому замена цифр обратными не выполнялась и корректирующие поправки в матрице частных произведений равны 0.
Разумеется, что нулевые строки поправок в матрицу частных произведений можно не вводить, но это зависит от способа организации процесса вычислений.
Увеличение количества строк в матрице частных произведений усложняет вычисление их суммы. Можно сократить одну строку, если совместить частное произведение на младший разряд множителя со второй строкой корректирующих поправок в одну строку. Для этого в двоичной системе счисления совмещенную строку записывают по следующему правилу.
В совмещенную строку записывают:
если
, частное произведение на младший разряд Y;
если
и младший разряд
равен 0, множимое, т.е. или ;
если
и младший разряд
равен 1, удвоенное множимое, т.е. сдвинутое на разряд влево с занесением 0 справа.
Действительно, совмещенная строка должна содержать сумму частного произведения на младший разряд множителя и корректирующей поправки второй строки. При (4-06) корректирующая поправка равна 0. Поэтому совмещенная строка должна содержать частное произведение на младший разряд множителя.
При (4-05), (4-07) и младшем разряде множителя равном 0 частное произведение равно 0, а корректирующая поправка в зависимости от знака X равна множимому или . Поэтому совмещенная строка должна содержать множимое.
При и младшем разряде множителя равном 1 частное произведение и корректирующая поправка равны множимому. Поэтому совмещенная строка должна содержать удвоенное множимое.
П
ример
4-31. Операнды
в дополнительном двоичном коде и код
1|00...0доп
используется для представления числа.
Разряды знака и дополнительный старший
значащий разряд дополнительного кода
произведения вычислены по отдельным
правилам. Вторая строка в матрицах
частных произведений, показанная жирным
шрифтом, совмещенная.
В вариантах A и С частное произведение на младший разряд множителя равно 0. Поэтому совмещенная строка содержит множимое.
В вариантах B и D частное произведение на младший разряд множителя и корректирующая поправка равны множимому. Поэтому совмещенная строка содержит удвоенное множимое, т.е. сдвинутое на разряд влево.
Рассмотренный способ умножения имеет самостоятельное значение в случае, когда операнды представлены в дополнительном двоичном коде, а результат необходимо получить в прямом коде.