Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 4
Текст из файла (страница 4)
е. так, как складываются положительные числа): Переносы 1 1 ! Первое слагаемое У, 0 8 3 1 Второе слагаемое У,„„! 6 2 4 + Сумма У=У+У, 0 4 5 5 1 1 ! 1 Переносы Первое слагаемое М, Второе слагаемое У, „ + 1 1 0 0 1 1 001001 Сумма М=М,-)-У, Как уже указывалось выше, перенос, возникающий из знакового разряда, отбрасывается. Пример В.2.
Изменим на обратный знаки слагаемых (по отношению к предыдущему примеру): М, = 1!01!О, М, =-- 00!101. Очевидно, ожидаемый ответ: У == У, + У, = 1 01001. Переносы 1 0 1 0 1 0 ! 0 0 ! 1 0 1 Первое слагаемое М,д,„ + Второе слагаемое М, Сумма М„„=(У, +М,)д„„ Сумма У=М,+У, 1 1 0 1 1 1 1 0 1 0 0 1 Таким образом, если результат сложения есть отрицательное число, то оно оказывается представленным в дополнительном коде.
!8 При сложении складываются и двоичные цифры знаковых разрядов с отбрасыванием возникающего из этого разряда переноса. Как видим, получен правильный результат (действительно, 83! †376=4). В двоичной системе счисления дополнительный код отрицательного числа формируется по следующему правилу: инвертируются (путем замены 0 на ! и 1 на 0) цифры всех разрядов, кроме знакового, н в младший разряд прибавляется единица.
Например, если М вЂ” — 1 10110. М„, = 1 О!О!О. Обратное преобразование из дополнительного кода в прямой код производится по тому же правилу. Рассмотрим примеры выполнения операции сложения. Пример В.1. Пусть У, =- О 101!О, У, = 1 О!!01. К'од 8421 1 1 1~- ! 01 1 0 0 0 1 0 Переносы Первая цифра б Вторая цифра 2 Сумма 9 1 О 0 1 Коррекция Результат 1 0 0 1 В этом случае полученное в результате суммирования число 1001, меньше десяти и коррекция суммы не требуется. Пример В.4. Сложить десятичные цифры 8 и 9.
Десятичная система Переносы 1~-0 Код 8421 о 1000 1001 Первая цифра Вторая цифра Сумма Коррекция Результат 8 9 0001 0 1 10 0111 Суммирование десятичных чисел. Рассмотрим вначале операцию суммирования в одном разряде десятичных чисел, т. е, суммирование двух десятичных цифр и единицы переноса, которая при суммировании чисел может поступить из предыдущего десятичного разряда. Способ суммирования десятичных цифр зависит от того, какой двоичный код выбран для представления десятичных цифр. Ниже рассматривается операция суммирования при использовании кода 8421. Двоичные представления десятичных цифр суммируются по обычным правилам сложения двоичных чисел.
Если полученная сумма содержит десять или более единиц, то формируется единица переноса, передаваемая в следующий десятичный разряд, а из суммы вычитаются десять единиц. Полученный результат есть цифра соответствующего разряда суммы. Наличие в полученной сумме десяти или более единиц выявляется по следующим признакам: появление переноса из разряда 8, возникающего при суммировании цифр; наличие единиц одновременно в разрядах 8 и 4 либо 8 и 2 в полученной сумме.
Прн этом требуется коррекция суммы прибавлением к ней шести единиц (числа 01!0,). Покажем эти действия на примерах. Пример В.З. Сложить десятичные цифры 6 и 2 и перенос 1, поступающий из предыдущего десятичного разряда. Десятичная система !9 Десятичная система Код 8421 1 1 1 0~- ! ! 1 0 1 1 0 0 1 1 1 Переносы 1 -0 Первая цифра Вторая цифра Сумма Коррекция результат 6 7 3 1 1 0 1 0 1 1 0 1ч-0 0 1 1 В данном примере суммирование десятичных цифр приводит к числу 1101, (13). Так как сумма больше десяти, то необходимо передать перенос в следующий десятичный разряд, а сумму скорректировать, прибавив к ней 6 единиц.
В процессе коррекции возникает отбрасываемый перенос из разряда 8, уменьшающий сумму на 16 единиц. Таким образом, прибавление 6 и вычитание 16 обеспечивают требуемое уменьшение суммы на 10 единиц. При использовании других кодов для представления десятичных цифр правила суммирования отличаются от приведенных выше.
При суммировании многоразрядных десятичных чисел отрицательные числа должны быть'предварительно представлены в обратном либо дополнительном коде. Обратный код отрицательного десятичного числа получается путем замены цифр разрядов (кроме знакового) их дополнениями до 9. Пример В.б. Сложить числа М, =- 836 и У, = — 298. 1 083 6 170 1 Переносы М, )увозя >1+-0 5 3 7 ! 053 8 В данном случае сложение двух единиц в разряде 8 дает в соответствующем разряде суммы 0 и перенос 1 из разряда 8. Таким образом, появление переноса из разряда 8,передаваемого в следующий десятичный разряд, уменьшает сумму не на 10, а на 16 единиц.
Уход из суммы шести лишних единиц компенсируется прибавлением 6 единиц в ходе коррекции. Пример В.5. Сложить десятичные цифры 6 и 7. Пример В.7. Сложить числа А!, = — 836 и М, = 298. Переносы ! 1 ! 1 1 6 3 0298 1!!гвбр Авар = (А!1+ Х!бвбр) % =А!,+М, ! 4 6 ! ! Ь 3 8 1 1 0 1 множимое х 1 0 1 ! множитель ! 1 0 1 1-е частичное произведение ! ! 0 1 2-е частичное произведение 0 0 0 0 3-е частичное произведение 1!01 4-е частичное произведение 1 0 0 0 1 1 1 1 произведение Как видно из примера, в процессе выполнения операции умножения формируются частичные произведения (произведения множимого 2! Простота формирования дополнения до 9 достигается при пользовании кодом с иэбьипком 3 либо кодом 2421. Умножение двоичных чисел. Операция умножения чисел, представленных в форме с фиксированной точкой, включает в себя определение знака и абсолютного значения произведения.
Определение знака произведения. Знаковый разряд произведения может быть получен суммированием знаковых разрядов сомножителей без формирования переноса (так называемым суммированием по модулю 2). Действительно, при совпадении цифр знаковых разрядов сомножителей(0 ... и О..., либо 1. и! ...) их сумма по модулю 2 равна О, т, е. соответствует знаковому разряду произведения двух сомножителей, имеющих одинаковые знаки; при несовпадении цифр знаковых разрядов эта сумма будет равна 1, что также соответствует знаковому разряду произведения двух сомножителей с разными знаками.
Определение абсолютного значения произведения. Абсолютное значение произведения получается путем перемножения чисел без учета нх знаков (так называемого кодового умножения). Пусть производится умножение чисел 1101, и 1О! 1,. 1101 11010 + 0000 4-е частичное произведение сдвиг на один разряд влево 3-е частичное произведение сумма 4-го и 3-го частичных произведений сдвиг на один разряд влево 11010 110100 + 1101 1000001 2-е частичное произведение сумма 4-го, 3-го и 2-го частичных произве- дений 1 О О О О О 1 О + 1101 сдвиг на один разряд влево 1-е частичное произведение 1 0 0 0 1 1 1 1 произведение Нетрудно убедиться, что при этом все частичные произведения суммируются с требуемыми сдвигами относительно друг друга, благодаря чему и образуется ранее приведенный результат умножения чисел. При умножении целых чисел для фиксации произведения в разрядной сетке должно предусматриваться число разрядов, равное сумме числа разрядов множимого и множителя.
Рассмотрим процессы при выполнении операции умножения с суммированием частичных произведений, начиная с младшего частичного произведения, на примере умножения дробных чисел 0,1101, и 0,1011,. на цифры разрядов множителя), которые суммируются с соответствующими сдвигами друг относительно друга. В цифровых устройствах процессу суммирования частичных произведений придают последовательный характер: формируется одно из частичных произведений, к нему с соответствующим сдвигом прибавляется следующее частичное произведение, к полученной сумме двух частичных произведений прибавляется с соответствующим сдвигом очередное частичное произведение и т.д., пока не окажутся просуммированными все частичные произведения.
Этот процесс суммирования можно начинать с младшего .либо старшего частичного произведения. Ниже показаны процессы при умножении с суммированием частичных произведений, начиная со старшего частичного произведения (используется приведенный выше пример умножения чисел !10!э и 1011,). 2-е частичное произведение сумма 1-го, 2-го и 3-го частичных произведений сдвиг на один разряд вправо 23 о,! !01, 1-е частичное произведение 0,0110,1 ! сдвиг на один разряд вправо + 0,1101~ 1 1, 0 0 1 1', 1 сумма 1-го и 2-го частичных произведений О, 1 0 0 1 ~ 1 ! сдвиг на один разряд вправо + ! 0,0000~ ! 3-е частичное произведение О, 1 О О 1 )! ! ! 0,0100 ~1! ! + ! 0,1101 ! 4-е частичное произведение 1, 0 0 0 1 ' 1 1 1 сумма частичных произведений 0, 1 0 0 0 ~ 1 1 ! 1 сдвиг вправо, произведение ! Если требуется сохранять все разряды в произведении, то в устройстве, формирующем произведение, необходимо иметь число разрядов, равное сумме числа разрядов множимого и множителя.
При умножении дробных чисел часто в произведении требуется сохранять то же число разрядов, что и в множимом. В таком приближенном представлении результата не фиксируются цифры разрядов, при сдвигах выдвигаемые правее показанной в примере вертикальной линии. Таким образом, цифры четырех младших разрядов в примере окажутся потерянными и будет получен приближенный результат О,!000. Может быть проведено округление по правилу: если старший из отбрасываемых разрядов содержит единицу, то к младшему из сохраняемых разрядов прибавляется единица (результат с округлением равен в примере 0,1001). Рассмотренный выше способ умножения предусматривал отделение от сомножителей их знаковых разрядов и раздельное выполнение действий над знаками и модулями чисел. Одним из эффективных алгоритмов умножения является алгоритм Бута. Он не предусматривает раздельных операций над знаковыми разрядами и модулями сомножителей.
При выполнении действий по этому алгоритму в получаемом результате образуется произведение со знаковым разрядом. На рис. В.б показана схема алгоритма в содержательных обозначениях. Здесь Х вЂ” множимое; У вЂ” множитель; 5 — старшие разряды суммы частичных произведений; Сч — счетчик числа повторений цикла, в который в качестве начального значения заносится число разрядов сомножителей, включая и знаковый разряд; П!, П2 — разряды множителя, выдвигаемые при его сдвиге соответственно в предыдущем и текущем повторениях цикла. пх выполняемое деастаме 5=5 — Х 5 =- 5+Х Прн комбинациях значений не изменяется; прн комбинации П! н П2, равных 00 н 11, значение 5 О! значение 5 уменьшается на велнчн- ну Х, а прн комбинации 10 — увеличивается на Х.
В последующих блоках производится подготовка к повторению цикла. Содержимое счетчика уменьшается на единицу н по результату проверки содержимого счетчика на нуль выясняется необходимость повторения цикла. После выхода нз цикла в 5 образуется знаковый разряд н группа старших разрядов произведения, в (л — 1) разрядах г' — группа младших разрядов произведения. Следует отметить, что отрицательные сомножителя должны представляться в дополнительном коде; если произведение оказывается отрицательным числом, то оно представляется в дополнительном коде.