- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Преобразование множителя с сокращением вдвое верхней оценки количества единиц
Можно вдвое уменьшить верхнюю оценку числа единиц в множителе Z по сравнению с Y и как следствие в среднем вдвое увеличить количество равных нулю частных произведений. Для этого введем правила обнаружения изолированных единиц и нулей в цепочке разрядов Y, и будем сохранять изолированную 1, а изолированный 0 заменять .
Пусть Y содержит цепочку 1 с изолированным нулем:
Y:
После
преобразования Y
в по табл.4.5 получим: Z1:
Если
изолированный ноль в Y
заменить на
,
то:
Не трудно убедиться в том, что количественные эквиваленты всех трех цепочек равны, а количество нулей в цепочке Z больше чем в Z1.
Пусть Y
содержит цепочку нулей с изолированной
единицей:
Y:
После
преобразования Y
в Z1
по табл.4.5 получим: Z1:
Если не заменять изолированную 1 в Y, то Z:
сохранит значение Y.
При разработке правил преобразования основанных на этом подходе следует учитывать, что дополнительный код содержит справа от младшего разряда цепочку нулей заданных по умолчанию, а слева от знакового разряда – цепочку цифр копирующих знак.
Правило преобразования, в основу которого положен принцип просмотра Y от младшего разряда к старшему, описывается табл.4.6. Здесь
V – вспомогательное двоичное слово с той же разрядностью, что и Y;
– индекс разряда
(индекс младшего разряда
,
индекс разряда знака
).
Разряд
слова V
указывает, что в Y
справа от преобразуемого разряда
размещена цепочка нулей. При
справа от разряда
размещена
цепочка единиц.
Разряд
всегда, так как справа от младшего
разряда
размещена цепочка нулей.
Например, если
,
то преобразуемый разряд
содержит единицу, изолированную нулями,
которую следует сохранить и считать,
что разряду
по-прежнему
предшествует цепочка нулей. Поэтому в
строке 3 табл.4.6
и
.
П
Таблица 4.6
yi+1
yi
vi
zi
vi+1
Частное произведение
0
0 0 0
0 1 0
1 0 0
1 1 1
0 0 1
0 1 1
1 0 1
1 1
0 0
1 0
1 0
0 1
0 0
1 1
1 1
0 1
0 X X 0 0
–X
–X
0
следует принять
,
так как слева от знакового разряда
цепочка содержит цифру знака.
При умножении
результат преобразования
не фиксируют, а лишь подразумевают. Так,
например, при
произведение X
на разряд
принимают равным (–X),
поскольку
.
Если в исходном
коде нули и единицы чередуются, то после
преобразования количество нулей не
изменится. Действительно:
,
так как 1 в Y
изолированы в цепочке нулей начинающейся
справа от младшего разряда, а
,
так как 1 в разряде знака является первой
в цепочке 1 продолжающейся влево.
Пример 4-43.
Приведены
результаты преобразования дополнительных
к
Y: 001001101100101д
(+4965)
010
10 11 001001 1д(+5523)
10000д(-16)
11101д
(-3) V: 0
00011111000000
1 11 11 10 000011 0
0
0000 1
1000 Z: 0
010100
0
00101(+4965)
1 0
0
0
001010
(+5523)
(-16)
(-3)
Верхняя оценка
количества единиц в Z
составит
,
а не
,
как в случае преобразования по табл.4.5.
Следовательно, не менее половины строк
в матрице частных произведений будут
содержать нули. В среднем количество
не равных нулю строк уменьшится при
большом
почти в 1,5 раза,
что существенно снизит трудоемкость
вычисления.
При разработке вычислительного процесса умножения можно учитывать, что единицы в цепочке Z обязательно разделены, по крайней мере, одним нулем. В частности это позволяет выполнять умножение на двойку разрядов множителя, что вдвое сокращает количество строк в матрице частных произведений и существенно снижает трудоемкость вычисления произведения.
