Умножение двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика
При выполнении операции умножения знаковых чисел исходные сомножители могут быть представлены в ПК, ОК или ДК:
. (4.35)
При данном способе умножения знаковые и числовые разряды обрабатываются отдельно. Для определения знака произведения осуществляют суммирование (по модулю 2) цифр, записанных в знаковых разрядах операндов. Модуль произведения получают, перемножая модули сомножителей в соответствии с одним из рассмотренных ранее алгоритмов:
. (4.36)
Определение знака произведения показано в табл. 4.5. Где (0) - обозначает (+), а (1) - обозначает (-).
Таблица 4.5 - Определение знака произведения
00=0 |
01=1 |
10=1 |
11=0 |
Однако в современных компьютерах операнды в памяти обычно хранятся в ДК, что продиктовано, в частности, удобством выполнения операции сложения (учитывая автоматическое формирование знака суммы). Для того, чтобы умножить два числа, представленных в ДК можно использовать следующий прием: перед выполнением операции умножения исходные числа преобразуют в ПК, затем их перемножают, а результат далее переводят в ДК.
Такой прием не является эффективным. Поэтому на практике чаще всего используют специальные алгоритмы умножения чисел в дополнительных кодах. Алгоритмы корректного умножения операндов в ДК можно разделить на две группы: - алгоритмы первой группы это алгоритмы с обработкой знаковых разрядов отдельно от числовых; - алгоритмы второй группы это алгоритмы с обработкой знаковых разрядов вместе с числовыми. Т. е., на сумматоре дополнительных кодов в процессе перемножения машинных изображений операндов получают одновременно знаковую и числовую части произведения.
Теорема: произведение дополнительных кодов сомножителей равно дополнительному коду результата только в случае положительных сомножителей. Если хотя бы один сомножитель отрицателен, то произведение чисел на сумматоре дополнительных кодов получается прибавлением поправки () к произведению дополнительных кодов сомножителей. Рассмотрим арифметическое обоснование алгоритмов Первой группы при различных вариантах комбинаций знаков операндов. С этой целью у операндов отбрасывается знаковая цифра и выполняется умножение полученных псевдомодулей по одному из известных алгоритмов. Результат такого умножения назовем псевдопроизведением (). Обозначим вес знакового разряда сомножителей (). Тогда, в соответствии с рассмотренным ранее правилом формирования дополнительного кода, отрицательные сомножители будут представлены в ДК следующим образом:
. (4.37)
При удалении знакового разряда получаем псевдомодули:
. (4.38)
Всего возможны четыре варианта сочетания знаков сомножителей:
Случай №1. .
. (4.39)
В этом случае сразу получено истинное значение положительного произведения в ДК, которое не требует корректирования.
Случай №2.
.
(4.40)
Результат значительно отличается от модуля кода истинного произведения:
;
. (4.41)
Сомножитель представляет собой (s-1)-разрядный псевдомодуль числа (-X), представленного в ДК. Сомножитель эквивалентен сдвигу на (s-1) разряд влево. Сравнение (Z) и (Z') показывает, что результат умножения должен быть скорректирован посредством сложения (Z') с поправкой ().
Случай №3.
.
. (4.42)
. (4.43)
Случай №4.
.
. (4.44)
На практике используют упрощенную поправку, поскольку нескорректированный операнд (C) проявит себя в виде (1) в знаковом разряде. Это не имеет значения, поскольку знак (Z) был сформирован отдельно на начальном этапе. Подход к формированию алгоритма умножения состоит в следующем.
- 1. Получим псевдомодули операндов, отбросив старшие (знаковые) цифры: (0) - в положительном числе, (1) - в отрицательном. 2. Считая разрядную сетку наращиваемой, видим, что операнд в старших разрядах содержит незначащие цифры, тождественно равные знаковой. 3. В таком случае истинные операнды можем считать "удлиненными псевдомодулями", у которых самые левые цифры играют роль знаковых разрядов. 4. Выполняя их умножение по правилам, рассмотренным выше, получаем уже не модуль (Z'), а само псевдопроизведение с некоторыми псевдознаковыми цифрами в двух самых старших разрядах. Указанные цифры относятся к знаковым по расположению, но не имеют смысла таковых. 5. Возникает задача найти истинное значение знаковой цифры числа (Z).
Рассмотрим арифметическое обоснование алгоритмов Второй группы при различных вариантах комбинаций знаков операндов, т. е. умножение чисел в ДК с обработкой знаковых разрядов вместе с числовыми в зависимости от сочетания знаков сомножителей. При этом используем предпосылки, приведенные в предыдущем доказательстве. Считаем, что вес знакового разряда равен (A). Тогда вес разряда, следующего за знаковым: .
Случай №1.
.
Перемножая машинные представления сомножителей в ДК, получим:
. (4.45)
Случай №2.
.
Учитывая, что разрядность произведения (и псевдопроизведения) составит (2s) - бит, вес разряда, следующего за знаковым разрядом произведения:
(4.46)
Тогда:
(4.47)
Перемножая ДК сомножителей, получим:
. (4.48)
Истинное значение произведения получается:
. (4.48)
. (4.49)
Случай №3.
.
Аналогично предыдущему можно показать, что данному варианту требуется коррекция:
. (4.50)
Случай №4.
.
. (4.51)
На практике используют упрощенную поправку:
. (4.52)
При умножении в ДК по любому из вариантов данной группы в процессе прибавления () к (Z') важно соблюдать соответствие весов разрядов псевдопроизведения и корректирующей поправки (с учетом наличия псевдознака). Старший разряд корректирующей поправки сформирует знаковую цифру. Из рассмотренных ранее вариантов умножения в соответствии с алгоритмами обеих групп, следует, что для коррекции результата умножения ДК операндов необходимо в каждом случае по комбинации знаков определять величину коррекции, а затем выполнять 1-2 шага суммирования. Однако этого можно избежать, если коррекцию совмещать с процессом суммирования частичных произведений. Рассмотренные алгоритмы являются базовыми и реализуют непосредственный способ введения поправок. Более широкое применение На практике получили алгоритмы с косвенным способом введения поправок.
Случай №1.
.
По примеру первой и второй групп результат является истинным произведением и корректировка не требуется. Т. е. сформированы истинные модуль и знак.
Случай №2.
.
При умножении младшими разрядами вперед получится известный для этого случая модуль псевдопроизведения. Если при умножении на знаковую цифру множителя не прибавлять последнее ЧП к их сумме, а вычесть его, тем самым, (Z') будет уменьшено на (). Кроме того, если для представления последнего ЧП воспользоваться ДК, то при его прибавлении не только будет откорректирована числовая часть произведения, но и сформируется правильный его знак. При этом, последний сдвиг ЧП должен быть арифметическим с учетом отрицательного знака ЧП.
Случай №3
.
Если сдвиг суммы ЧП вправо на (i) разрядов выполнять по правилам сдвига модифицированного ДК, а затем выполнять суммирование ЧП по правилам суммирования модифицированных ДК (с потерей переноса из знакового разряда), то будет получено правильное произведение исходных чисел в ДК, т. е. (). Т. о., коррекция не требуется.
Случай №4
.
Коррекция результата выполняется объединением двух предыдущих вариантов, т. е. при умножении на знаковый разряд множителя выполняют вычитание, а суммирование и сдвиг частичных произведений производят с использованием МДК. Таким образом при положительном множителе умножение в ДК можно выполнять по алгоритмам умножения в ПК, если только суммировать ЧП и сдвиг выполнять по правилам сложения и сдвига модифицированного ДК (перенос из ЗР будет игнорироваться). Существует еще один способ умножения знаковых чисел в ДК. Он заключается в том, что отрицательный множитель необходимо преобразовать в положительный. Это выполняется умножением на (-1) множимого и множителя. В итоге, в соответствии с выше приведенной теоремой, умножение выполняется по обычным правилам, а результат не нуждается в корректировке. Общий алгоритм умножения целых двоичных знаковых чисел, представленных в ДК заключается в следующем:
- 1. Исходное значение суммы ЧП принимается равным (0), (Сч. Т) присваивается значение, равное числу разрядов множителя. 2. Анализируется младшая разрядная цифра множителя. Если она равна (1), то к сумме ЧП прибавляется множимое; если (0) - прибавление не производится. Множимое при этом совмещается с суммой ЧП по старшим разрядам и представлено в исходном коде. 3. Производится арифметический сдвиг суммы ЧП вправо на (1) разряд с учетом флагов переноса (FC) и переполнения (FO). Содержимое (Сч. Т) уменьшается на (1). 4. пп.2-3 последовательно выполняются для всех цифровых разрядов множителя. 5. Если множитель -- положительное число, то полученный результат является истинным произведением (Z). Если множитель - отрицательное число, то к полученному результату (Z') прибавляется множимое с обратным знаком (дополнение), совмещенное по старшим разрядам. Полученная сумма представляет собой истинное произведение (Z). . Рассмотрим примеры вышеописанного алгоритма.
Пример №1. Необходимо перемножить два знаковых числа:
((+7)-(+3) = (+21)). Для удобства возьмем длину разрядной сетки равную четырем битам, а именно: Х = (+7) - множимое, Y = (+3) - множитель, Z = (+21) - произведение. Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением, т. е длина разрядной сетки произведения в два раза больше множимого и множителя. Алгоритм умножения приведен в табл. 4.6.
Таблица 4.6 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Регистр (В) Множимое X |
Регистр (С) Множитель Y |
Регистр (А) Произведение Z |
Счетчик тактов (Сч. Т) |
Комментарии | |||||
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
00000000 |
4 |
0111 |
Множимое | ||||||||
01110000 |
1Я СЧП | ||||||||
0 |
0 |
1 |
00111000 |
3 |
1ЫЙСдвиг СЧП | ||||
0111 |
Множимое | ||||||||
10101000 |
2Я СЧП | ||||||||
0 |
0 |
01010100 |
2 |
2 ОЙСдвиг СЧП | |||||
0 |
00101010 |
1 |
3 ИЙСдвиг СЧП | ||||||
00010101 |
0 |
4ЫЙСдвиг СЧП и получили число - (+21) | |||||||
СТОП |
Пример №2. Необходимо перемножить два знаковых числа:
((+7)-(-3) = (-21)).
Для удобства возьмем длину разрядной сетки равную четырем битам, а именно:
Х = (+7) - множимое;
Y = (-3) - множитель;
Z = (-21) - произведение.
Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением.
То есть длина разрядной сетки произведения в два раза больше множимого и множителя.
Алгоритм умножения приведен в табл. 4.7.
Таблица 4.7 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Регистр (В) Множимое X |
Регистр (С) Множитель Y |
Регистр (А) Произведение Z |
Счетчик тактов (Сч. Т) |
Комментарии | |||||
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
00000000 |
4 |
0111 |
Множимое | ||||||||
01110000 |
1Я СЧП | ||||||||
1 |
1 |
0 |
00111000 |
3 |
1ЫЙСдвиг СЧП | ||||
1 |
1 |
00011100 |
2 |
2 ОЙСдвиг СЧП | |||||
0111 |
Множимое | ||||||||
10001100 |
2Я СЧП | ||||||||
1 |
01000110 |
1 |
3 ИЙСдвиг СЧП | ||||||
0111 |
Множимое | ||||||||
10110110 |
3Я СЧП | ||||||||
01011011 |
0 |
4ЫЙСдвиг СЧП и (получили (Z')) | |||||||
1001 |
Кор-ция на (ХД) | ||||||||
11101011 |
Число (-21) | ||||||||
СТОП |
Пример №3. Необходимо перемножить два знаковых числа:
((-7)-(+3) = (-21)).
Для удобства возьмем длину разрядной сетки равную четырем битам, а именно:
Х = (-7) - множимое;
Y = (+3) - множитель;
Z = (-21) - произведение.
Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением.
То есть длина разрядной сетки произведения в два раза больше множимого и множителя.
Алгоритм умножения приведен в табл. 4.8.
Таблица 4.8 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Регистр (В) Множимое X |
Регистр (С) Множитель Y |
Регистр (А) Произведение Z |
Счетчик тактов (Сч. Т) |
Комментарии | |||||
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
00000000 |
4 |
1001 |
Множимое | ||||||||
10010000 |
1Я СЧП | ||||||||
0 |
0 |
1 |
01001000 |
3 |
1ЫЙСдвиг СЧП | ||||
1001 |
Множимое | ||||||||
11011000 |
2Я СЧП | ||||||||
0 |
0 |
01101100 |
2 |
2 ОЙСдвиг СЧП | |||||
0 |
00110110 |
1 |
3 ИЙСдвиг СЧП | ||||||
00011011 |
0 |
4ЫЙСдвиг СЧП и (получили (Z')) | |||||||
1101 |
Кор-ция на (YД) | ||||||||
11101011 |
Число (-21) | ||||||||
СТОП |
Пример №4. Необходимо перемножить два знаковых числа:
((-7)-(-3) = (+21)).
Для удобства возьмем длину разрядной сетки равную четырем битам, а именно:
Х = (-7) - множимое;
Y = (-3) - множитель;
Z = (+21) - произведение.
Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением.
То есть длина разрядной сетки произведения в два раза больше множимого и множителя. Алгоритм умножения приведен в табл. 4.9.
Таблица 4.9 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Регистр (В) Множимое X |
Регистр (С) Множитель Y |
Регистр (А) Произведение Z |
Счетчик тактов (Сч. Т) |
Комментарии | |||||
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
00000000 |
4 |
1001 |
Множимое | ||||||||
10010000 |
1Я СЧП | ||||||||
1 |
1 |
0 |
01001000 |
3 |
1ЫЙСдвиг СЧП | ||||
1 |
1 |
00100100 |
2 ОЙСдвиг СЧП | ||||||
1001 |
Множимое | ||||||||
10110100 |
2Я СЧП | ||||||||
1 |
01011010 |
2 |
3 ИЙСдвиг СЧП | ||||||
1001 |
Множимое | ||||||||
11101010 |
3Я СЧП | ||||||||
01110101 |
0 |
4ЫЙСдвиг СЧП и (получили (Z')) | |||||||
0111 |
Кор-ция на (XД) | ||||||||
11100101 | |||||||||
0011 |
Кор-ция на (YД) | ||||||||
1 |
00010101 |
Число (+21) | |||||||
СТОП |
Похожие статьи
-
Умножение двоичных беззнаковых чисел в компьютерных системах - Компьютерная арифметика
Пусть сомножителями X и Y являются s-битные целые числа без знака: Где - (Х) - множимое, (Y) - множитель, (Z) - произведение. Тогда: Z = X - Y. (4.2)...
-
Контроль переполнения в компьютерных системах - Компьютерная арифметика
Возможно только при сложении чисел с одинаковыми знаками, когда для представления результата недостаточно отведенного количество разрядов (требуется...
-
Деление двоичных беззнаковых чисел в компьютерных системах - Компьютерная арифметика
Деление мантисс чисел в форме с фиксированной запятой выполняется над абсолютными величинами операндов, представленными, чаще всего, прямым кодом....
-
Операции сдвига в компьютерных системах - Компьютерная арифметика
Является одной из самых распространенных в компьютерной арифметике. В частности, она используется при выполнении умножения или деления двоичных чисел....
-
При сложении и вычитании знаковых двоичных чисел операция вычитания заменяется операцией сложения в дополнительном коде. Докажем, что результат...
-
Операция сложения и вычитания, двоичных беззнаковых чисел в компьютерных системах Компьютерная система выполняет сложение и вычитание операндов по...
-
Он позволяет заменить операцию вычитания на операцию сложения, чем упрощает архитектуру компьютерной системы. Дополнительный код является дополнением...
-
Представление числовых данных в компьютерных системах - Компьютерная арифметика
Компьютерный арифметика счисление двоичный Система вещественных чисел, используемая в ручных расчетах, предполагается бесконечной и непрерывной, т. е....
-
Перевод чисел из одной позиционной системы счисления в другую - Компьютерная арифметика
Задача перевода чисел из одной позиционной системы счисления в другую является одной из главных в компьютерной арифметике. Ее можно сформулировать...
-
Системы счисления - Компьютерная арифметика
Как было отмечено в первой главе Система счисления - совокупность приемов и правил для установления однозначного соответствия между любым числом и его...
-
Классификация систем счисления - Компьютерная арифметика
В настоящее время различают Позиционные И Непозиционные системы счисления. Классификация систем счисления приведена на рис. 2.1. Рисунок 2.1 --...
-
10 2 4 8 16 0 0 0 0 0 1 1 1 1 1 2 10 2 2 2 3 11 3 3 3 4 100 10 4 4 5 101 11 5 5 6 110 12 6 6 7 111 13 7 7 8 1000 20 10 8 9 1001 21 11 9 10 1010 22 12 A...
-
Арифметические флажки - Компьютерная арифметика
Флажки являются признаками, представляющими общую характеристику результата выполнения операции. Наиболее широко применяются следующие флажки: - Флажок...
-
ДД-код Константа16 ДД-код Константа16 1111 1111 FF 0000 0000 00 0011 0101 35 1111 0100 F4 0101 0111 57 1001 1010 9A 1000 1101 8D 0000 0111 07 1000 0000...
-
Собственные числа и собственные векторы матрицы Предположим, что среди бесконечного множества одномерных пространств R1 найдутся такие, которые будут...
-
Арифметические операции в двоичной системе счисления Умножение в двоичной системе счисления = поразрядные сдвиги + суммирование Основные форматы хранения...
-
Компромиссная система, для удобства восприятия данных человеком и корректной работы компьютера, двоично-десятичная запись чисел. Принцип построения этой...
-
Базовые понятия и определения компьютерной арифметики - Компьютерная арифметика
Компьютерная арифметика - совокупность принципов и форм представления числовой информации, методов и алгоритмов выполнения арифметических операций и...
-
Основные термины теории баз данных - БД (База данных) - совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы...
-
Виды технического обслуживания СВТ Вид технического обслуживания определяется периодичностью и комплексом технологических операций по поддержанию...
-
Рассмотрим замкнутую сеть массового обслуживания с разнотипными заявками, которая является вероятностной моделью обслуживания заявок в УП "Проектный...
-
Степени матриц Произведение матриц AAA...A, где A - квадратная матрица порядка n, можно записать в виде Ak, где k означает число сомножителей, входящих в...
-
Системы счисления. Представление данных в ЭВМ - Основы программирования
В современном мире для записи числовой информации используют позиционные системы счисления, в которых числа записываются с помощью ограниченного...
-
Создание прецедента - Операционная система windows 2000
Стандартизация позволяет "создать прецедент", благодаря которому администрирование сети становится более упорядоченным. Введение стандарта позволяет...
-
Блок OVRDSEL принимает до четырех входов (от первичных блоков) и выбирает один с наибольшим или наименьшим значением. Графически это выглядит следующим...
-
Для поддержания компьютерной системы 1С:Библиотека в исправном состоянии необходимо осуществлять мероприятия в соответствии с типовой системой...
-
Аппаратный и программный аспекты диагностики КС Диагностика неисправностей КС имеет два аспекта: аппаратный и программный. Аппаратный аспект...
-
При обслуживании пассажиров в кассах предварительной продажи билетов в качестве показателей, характеризующих систему обслуживания, используют максимально...
-
Показатели обслуживания пассажиров в справочном бюро автовокзала - число окон, обеспечивающих предоставление необходимого числа справок, длина очереди и...
-
Оптоволокно, используемое в ВОЛС СКС, подразделяются по диаметру сердцевины волокнана два типа : на одномодовые волокна и на многомодовые волокна....
-
Типы данных и команды SQL - Разработка информационной системы "Магазин компьютерных товаров"
Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для...
-
Расчет потребного числа отдельных устройств автовокзала Расчет числа билетных касс Число билетных касс должно обеспечивать полное и своевременное...
-
Корпоративные сети. Характеристики корпоративных компьютерных сетей В зависимости от масштаба производственного подразделения, в пределах которого...
-
Поломки видеокарты могут быть двух типов: программные и механические. И те, и те в некоторых случаях можно исправить в домашних условиях. При поломке...
-
Примеры решения СЛАУ методом Гаусса - Решение системы линейных уравнений методом Гаусса
В данном разделе покажем, как методом Гаусса можно решить СЛАУ. Решить методом Гаусса систему уравнений: Запишем расширенную матрицу системы: Сейчас...
-
Эксперименты Обозначенные в предыдущих главах допущения касательно переносимого кода не позволяют использовать какие-либо стандартные тесты для проверки...
-
Цветовая модель RGB - Компьютерная графика в рекламе
RGB-модель Способ разделения цвета на составляющие компоненты называется Цветовой моделью . В компьютерной графике применяются три цветовые модели: RGB ,...
-
Qure Optimizer компании DB Sophic - Система автоматизированного разделения кода прикладных программ
Qure Optimizer является частью системы Qure управления производительностью БД и приложений работающих с БД. Данный программный продукт производит анализ...
-
Даталогическое проектирование - Банки и базы данных. Системы управления базами данных
Даталогической моделью БД называется модель логического уровня, построенная в рамках конкретной СУБД, в среде которой проектируется БД. Описание...
-
Математик Кертіс Купер, учасник проекту GIMPS (Great Internet Mersenne Prime Search), виявив 48-е просте число Мерсенна. Десятковий запис такого числа...
Умножение двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика