- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Умножение дополнительного кода множимого на дополнительный код множителя
Умножение дополнительного кода множимого на требует преобразование отрицательного Y в прямой код, что осложняет вычисления, но исключает преобразования множимого и произведения из прямого в дополнительный код.
Существует возможность исключить преобразование кода отрицательного множителя. Действительно.
При
значащие разряды дополнительного кода
множителя равны
.
Если множимое
умножать на этот код, суммируя частные
произведения на значащие разряды
,
то результат будет равным
.
Так как дополнительный код произведения
при
должен быть
,
то для его получения достаточно к
прибавить
и вычесть
.
При
значащие разряды дополнительного кода
множителя равны
,
и произведение
.
Поэтому при
прибавлять
и вычитать
не следует.
Чтобы вычислить
разряд дополнительного кода произведения,
включая знаковый разряд, необходимо
расширять частные произведения влево
до
разрядов по тем же правилам, которые
использовались в разделе 4.4.2.2.
Рассмотрим умножение дополнительных кодов двоичных и десятичных чисел на примерах.
A B C D E X: 1|000
д
(-8) 1|001
д
(-7) 1|010
д
(-6) 0|111
д
(+7) 0|110
д
(+6) Y: 1|000
д
(-8) 1|000
д
(-8) 1|101
д
(-3) 1|000
д
(-8) 1|101
д
(-3) +00000000 +00000000 +11111010 +00000000 +00000110 +0000000 +0000000 +0000000 +0000000 +0000000 +000000 +000000 +111010 +000000 +000110 –11000 –11001 –11010 –00111 –
00110
01000000д
(+64) 00111000д
(+56) 00010010д
(+18)
11001000д
(-56)
11101110д
(-18)
F G H I J X: 1|000
д
(-8) 1|001
д
(-7) 1|010
д
(-6)
0|111
д
(+7) 0|110
д
(+6) Y: 0|111
д
(+7) 0|111
д
(+7) 0|011
д
(+3) 0|111
д
(+7) 0|011
д
(+3) +11111000
+11111001
+11111010 +00000111 +00000110 +1111000
+1111001
+1111010 +0000111 +0000110 +111000
+111001
+000000 +000111 +000000 –00000
–00000
–00000 –00000 –00000
11001000д
(-56)
11001111д
(-49)
11101110д
(-18)
00110001д
(+49)
00010010д
(+18)
В вариантах A-E
множитель
.
Поэтому из суммы частных произведений
на значащие разряды множителя вычитается
.
Операцию вычитания
можно заменить сложением с
.
Это потребует вычисления
Прибавление константы
не выполняется, так как это приведет к
вычислению лишнего разряда в произведении
слева.
В вариантах F-J
множитель
.
Произведение
.
Поэтому вычитать
не следует и нижняя строка матрицы
содержит нули. Разумеется, что эту строку
можно не записывать в матрицу и не
выполнять ее вычитание, что уменьшит
размерность матрицы и упростит вычисления.
Обратите внимание, что в примере 4-36 можно заменить операции сложения вычитанием, если изменить знаки частных произведений по правилу изменения знака числа в дополнительном коде. Можно, напротив, заменить операцию вычитания сложением, если изменить знак дополнительного кода в последней строке матрицы. Разумеется, что нулевые строки при изменении знака не изменят свое значение, так как в дополнительном коде существует только (+0).
Пример 4-37. Код 1|000доп применяется для кодирования числа . Вычисляется разряд дополнительного кода произведения десятичных чисел со знаком без преобразования дополнительных кодов операндов в прямой код при .
A B C D E
X:
1|000
д
(-103)
1|001
д
(-999)
1|001д
(-999)
0|999д
(+999) 0|999д
(+999)
Y:
1|000
д
(-103)
1|000
д
(-103)
1|602
д
(-398)
1|000
д
(-103) 1|602
д
(-398) +00000000 +00000000 +99998002 +00000000 +00001998 +0000000 +0000000 +0000000 +0000000 +0000000 +000000 +000000 +994006 +000000 +005994 –99000 –99001 –99001 –00999 –00999
01000000д
(+106) 00999000д 00397602д 99001000д 99602398д
– 0999000
– 0397602
F G H I J
X: 1|000д
(-103) 1|001д
(-999)
1|602д
(-398) 0|999д(+999)
0|398д
(+398)
Y: 0|999
д 0|999
д
(+999)
0|242
д
(+242) 0|999
д
0|242
д
(+242) +99991000 +99991009 +99999204 +00008991 +00000796 +9991000 +9991009 +9998408 +0008991 +0001592 +991000 +991009 +999204 +008991 +000796 –00000 –00000 –00000 –00000 –00000
99001000д 99001999д 99903684д 00998001д 00096316д
– 0999000 – 998001 – 0096316
При отрицательном
множителе последняя строка матрицы
содержит код
,
т.е. код значащих разрядов
сдвинутый на
разрядов влево. Так как умножение на 1
не увеличивает разрядность произведения,
то можно не расширять множимое влево и
копировать его в произведение, выполняя
последующее расширение произведения
в строке матрицы. Поэтому последняя
строка содержит две, а не одну расширяющую
цифру.
При положительном множителе последняя строка матрицы содержит нули и ее можно не записывать в матрицу.
Знак (–) кода
представлен
цифрой обратной нулю. При
она равна 9. Это создает некоторые
неудобства. Такое кодирование знака
произведения можно заменить принятым
ранее разными способами. Например, так,
как это сделано в примере 4-35 варианты
A-C.
Если воспользоваться правилами вычисления знака, дополнительного значащего разряда произведения и значения произведения при операндах равных 0 или 1|000, то это существенно упростит вычисления и приведет в примерах 4-36 и 4-37 к ликвидации в матрицах двух крайних слева столбцов.
В примере 4-37 вычисления выполняются в десятичной системе счисления. Что изменится, если операнды и результат должны быть представлены в дополнительном коде в восьмеричной, шестнадцатеричной или иной системе счисления с основанием ? Ответ прост. Все сохранится кроме таблиц умножения и значения цифры расширяющей значащие разряды слева.
