- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
В последующих
разделах рассмотрены способы умножения
прямых и дополнительных кодов двоичных
чисел с алфавитом
с промежуточным преобразованием
множителя в двоичную систему с алфавитом
,
позволяющие существенно уменьшить
затраты оборудования и времени на
вычисление произведения.
Рассмотрим свойства системы с симметричным алфавитом.
Представление
чисел в двоичной системе с алфавитом
неоднозначно и не требует знакового
разряда. Знак количественного эквивалента
однозначно определяет знак первой
единицы слева в коде числа. Например,
количественный эквивалент кодов
и
равен (+1), а кодов
и
равен
(–1).
Двоичный код
положительного числа в системе с
алфавитом
можно рассматривать как код того же
числа в системе с алфавитом
.
Например, коды 0|0101 в традиционной
двоичной системе счисления и 00101 в
симметричной двоичной системе имеют
количественный эквивалент (+5).
Для изменения
знака числа в системе
достаточно изменить знак всех единиц
в коде числа или их интерпретацию
(подразумевать, что цифра
кодирует количество (+1), а цифра 1 кодирует
количество (–1)). Например, если
,
то
.
В системе с алфавитом
в формате с фиксированной запятой и
фиксированной длины диапазон представляемых
чисел
симметричен относительно нуля и также
как в традиционной двоичной системе
зависит от положения запятой. Максимальное
положительное число
содержит во всех позициях 1, а минимальное
отрицательное
содержит
.
Код нуля содержит 0 во всех позициях
формата и не имеет знака. В симметричной
системе нельзя записать 0 со знаком.
При одинаковом
положении запятой и диапазоне
представляемых чисел количество разрядов
в прямом коде двоичного числа на 1 больше
чем в двоичной системе с алфавитом
.
Например, в прямом коде целые в диапазоне
[1|1111; 0|1111] (±15) имеют 5 разрядов, а в системе
с алфавитом
– 4 разряда [
;
1111 ].
В дополнительном
коде диапазон представляемых чисел
шире на одно число, чем в прямом коде.
Поэтому, если код 1|00…0д
применяется для кодирования числа
,
то для представления в системе с алфавитом
всех k
разрядных, включая разряд знака, двоичных
чисел потребуется k
разрядов. Диапазон k
разрядных чисел в системе с алфавитом
много шире диапазона k
разрядных чисел
в дополнительном двоичном коде. Поэтому
в системе с алфавитом
множество кодов не будут использоваться
для представления k
разрядных чисел дополнительного кода.
Например, при
дополнительный двоичный код принадлежит
диапазону [1|0000д;
0|1111д]
(-16; +15). Код 1|0000д
нельзя представить 4 разрядным числом
в системе с алфавитом
.
При 5 разрядах его значение будет
.
Диапазон 5 разрядных чисел в симметричной
системе [
;
11111] (-31; +31) много шире диапазона 5 разрядных
чисел в дополнительном коде. Поэтому
числа принадлежащие интервалам [
;
]
и [10000; 11111] при преобразовании из
дополнительного кода в симметричную
систему применяться не будут (они
лишние).
Если код 1|00…0д
не применяется для кодирования числа
,
то диапазон представляемых чисел
симметричен и им в системе с алфавитом
соответствуют
разрядные числа.
В дальнейшем будем
обозначать множимое и множитель,
представленные
в традиционной
системе счисления в дополнительном
коде, X
и Y соответственно,
а множитель в системе счисления
буквой Z.
Причем
.
Умножение
дополнительного кода X
на Z
можно выполнять сложением частных
произведений множимого на цифры
множителя. Произведение
.
Для его вычисления необходимо изменить
знак X.
Изменение знака X
и сложение частных произведений следует
выполнять по правилам справедливым при
представлении чисел в дополнительном
коде.
Вычисление (–X)
можно совместить со сложением частных
произведений. Можно заменить вычисление
(–X)
вычитанием частного произведения
.
Частное произведение
можно прибавлять или вычитать (раздел
4.4.2.11).
При сложении/вычитании
частных произведений в дополнительном
коде формат частного произведения
должен быть расширен влево до формата
произведения. Расширение формата влево
выполняется копированием знака частного
произведения в его дополнительные
разряды. Произведение будет получено
в дополнительном коде и не зависит от
того, каким способом записан количественный
эквивалент множителя в системе с
алфавитом
.
Формат произведения зависит от применения кода 1|00…0д для представления числа (см. начало раздела 4.4.2).
Пример 4-38. Во всех вариантах примера множимое в дополнительном двоичном коде и допускается применение кода 1|00…0доп для представления числа . Так как в X и Z количество разрядов равно 5,7 то разрядность произведения, включая разряд знака, выбрана 5+5=10. Поэтому формат частных произведений расширен до 10 разрядов копированием знаковых разрядов.
Частные произведения
вычислены в двоичном дополнительном
коде:
,
,
и их крайний левый разряд является
знаковым. В примерах знаковые разряды
и их копии выделены жирным шрифтом. Код
знака произведения показан жирным
шрифтом.
В варианте A
значение Z
не содержит
и его код в обеих системах счисления
одинаков. Знаки не равных нулю частных
произведений 1, так как
.
Варианты A и B отличаются способом записи множителя, но это не влияет, и не может влиять на результат вычислений.
В варианте B
первое и последнее частное произведение
,
так как
.
Третье и четвертое частные произведения
положительные, так как
.
Это потребовало вычисление значения
(–X)
по правилу изменения знака в дополнительном
коде, хотя можно было вместо изменения
знака X
выполнить вычитание частных произведений
(+4X)
и (+8X)
по правилу вычитания дополнительных
кодов.
A B C
X: 11010д
(-6)
11
0 10д
(-6) 001
1 0д
(+6)
Z:
1111111010
X 1111111010
X 1111111010 -X 000000000 000000000 111111010 -2X 11111010
4X 00000110 -4X 00000000 0000000 0000110 -8X 1111010 -8X 000000 111010 16X 000110
16X 1111100010д
(-30) 1111100010д
(-30) 0000011110д
(+30)
D E
1000
0д
(-16) 10000д
(-16)
0000010000
-X 0000000000 000000000 000000000 00000000 00000000 1110000 X 00000000 0000000 010000 -X 1110010000д
(-112) 0100000000д
(+256)
(+5)
(+5)
(+5)
(+7)
(-16)
Если код 1|00..0д для кодирования числа не используется, то разрядность Z и произведения уменьшатся на 1 разряд слева. Это приводит к сокращению в матрице левого столбца и нижней строки.
П
X:
11010д
(-6)
Z:
(+5)
+1111111010
X
–11111010 4X
–1111010 8X
+111010 16X
1111100010д
(-30)
000000000
Сравните полученный результат умножения с результатом, вычисленным в примере 4-38 вариант B.
