- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
В разделе 4.4.2.7 описан способ формирования матрицы частных произведений на один разряд множителя, у которой не менее половины строк содержат только нули. Если принять этот способ за основу при умножении на два разряда множителя, то количество нулевых частных произведений в среднем возрастет.
Разобьем множитель Y на двойки разрядов справа налево, Воспользовавшись табл.4.6 определим по значениям тройку разрядов и результаты запишем в табл.4.9. По значениям найдем частное произведение на эту двойку. Здесь индекс соответствует младшему разряду, причем . Прочерк в колонке означает, что значение не влияет на результат преобразований.
При умножении на множитель с четным числом разрядов , при нечетном числе разрядов , а может быть любым.
С
Таблица 4.9
yi+2
yi+1
yi
vi
zi+1
zi
vi+2
Частное произведение
– 0
0
0
– 0
1
0
0
1
0
0
1
1
0
0
– 1
1
0
– 0
0
1
0
0
1
1
1
0
1
1
– 1
0
1
– 1
1
1
0
0
0
0
1
0
1
0
0
1
0
1
0
1
1
0
1
0
1
0
0
1
0
1
0
1
1
0
0
1
0
X
2X
-2X
-X
X
2X
-2X
-X
0
В примере 4-45 вариант A состав частных произведений . Если при этом же значении множителя применить табл.4.9, то состав частных произведений . Разумеется, что значение произведения от этого не изменится.
Выигрыш в количестве частных произведений равных нулю по сравнению со способами умножения, описанными в разделах 4.4.2.8 и 4.4.2.9, не велик.
Изменение операции над частным произведением
В разделах 4.4.2.1-4.4.2.10 рассматривались различные способы умножения, которые сводятся к выполнению операций сложения или вычитания частных произведений. Поскольку операции сложения и вычитания взаимозаменяемые (раздел 4.3.7), любой способ умножения имеет множество модификаций. Конструктор системы умножения, приняв какой-либо способ умножения за основу, может изменить операции, выполняемые над строками матрицы, по своему усмотрению. Для этого достаточно изменить знаки чисел записанных в строках. Разумеется, что изменение знака числа в строке должно выполняться по правилу справедливому для кода, в котором записано число.
Пусть, например, для умножения десятичных чисел выбран способ, описанный в разделе 4.4.2.3. При этом способе умножения все строки матрицы, кроме последней, суммируются, а последняя строка вычитается (см. пример 4-37). Если Конструктору по какой-либо причине удобнее все строки суммировать, то он может заменить операцию вычитания последней строки сложением, изменив знак числа записываемого в последнюю строку. Поскольку числа в матрице записаны в дополнительном коде, то изменение знака числа следует выполнить по соответствующему правилу.
Ничто не препятствует замене операции сложения всех строк, кроме последней, операцией вычитания. Для этого достаточно записывать в эти строки частные произведения с обратным знаком.
Напротив, Конструктор может изменить знак числа в строке матрицы, изменив операцию, выполняемую над строкой. Например, при умножении способом, описанным в разделе 4.4.2.9, в одни строки матрицы должны быть записаны частные произведения со знаком множимого, а в другие – со знаком обратным знаку множимого (см. пример 4-45). Если Конструктор считает целесообразным записывать во все строки матрицы частные произведения со знаком множимого, то он может это сделать, заменив операцию, выполняемую над строками со знаком обратным знаку множимого, ей обратной.
Можно изменять знак любого числа записанного в строку матрицы и соответственно операцию над строкой независимо от того является число частным произведением или нет.
П ример 4-46. Выполняется умножение в дополнительном коде на два разряда множителя тех же двоичных чисел, что и в варианте B примера 4-45.
В варианте A с целью замены операции сложения строк матрицы операцией вычитания знаки частных произведений, вычисленные на основании табл.4.8, изменены на обратные.
В варианте B, чтобы упростить вычисление частных произведений, знак (–) в табл.4.8 интерпретируется как знак операции вычитания, выполняемой над соответствующей строкой матрицы. При этом знак всех частных произведений совпадает со знаком множимого, что исключает изменение знака множимого при вычислении частных произведений.
Пример 4-47. Вариант A примера является копией варианта C примера 4-45. Верхняя строка матрицы содержит 1 дополняющие коды отрицательных частных произведений до дополнительного. Содержимое верхней строки в варианте A интерпретируется как дополнительный код положительного числа с шестеркой старших разрядов, содержащих нули заданные неявно.
В
A B
X: 10001100
д
(-116) 10001100
д
Y: 11
01 11 01
д
(-35) 11
01 11 01
д +
1
0
1
0 –
1111110111100 +
11111110001100 X +
11111110001100 +
000001110010 –X×4 +
000001110010 +
1100011000 2X×16 +
1100011000 +
01110010
–X×64 +
01110010
0000111111011100д
0000111111011100д
+4060 +4060
Целесообразны или нет подобные преобразования – решать Конструктору системы. Здесь мы лишь констатируем возможность подобных преобразований и модификации способов умножения.