![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Случай №1. .
В этом случае сразу получено истинное значение положительного произведения в ДК, которое не требует корректирования. Случай №2.
Результат значительно отличается от модуля кода истинного произведения:
Сомножитель Случай №3.
Случай №4.
На практике используют упрощенную поправку 1. Получим псевдомодули операндов, отбросив старшие (знаковые) цифры: (0) - в положительном числе, (1) - в отрицательном. 2. Считая разрядную сетку наращиваемой, видим, что операнд в старших разрядах содержит незначащие цифры, тождественно равные знаковой. 3. В таком случае истинные операнды можем считать «удлиненными псевдомодулями», у которых самые левые цифры играют роль знаковых разрядов. 4. Выполняя их умножение по правилам, рассмотренным выше, получаем уже не модуль (Z’), а само псевдопроизведение с некоторыми псевдознаковыми цифрами в двух самых старших разрядах. Указанные цифры относятся к знаковым по расположению, но не имеют смысла таковых. 5. Возникает задача найти истинное значение знаковой цифры числа (Z). Рассмотрим арифметическое обоснование алгоритмов второй группы при различных вариантах комбинаций знаков операндов, т.е. умножение чисел в ДК с обработкой знаковых разрядов вместе с числовыми в зависимости от сочетания знаков сомножителей. При этом используем предпосылки, приведенные в предыдущем доказательстве. Считаем, что вес знакового разряда равен (A). Тогда вес разряда, следующего за знаковым: Случай №1. Перемножая машинные представления сомножителей в ДК, получим:
Случай №2. Учитывая, что разрядность произведения (и псевдопроизведения) составит (2s) - бит, вес разряда, следующего за знаковым разрядом произведения:
Тогда:
Перемножая ДК сомножителей, получим:
Истинное значение произведения получается:
Случай №3. Аналогично предыдущему можно показать, что данному варианту требуется коррекция:
Случай №4.
На практике используют упрощенную поправку:
При умножении в ДК по любому из вариантов данной группы в процессе прибавления ( Случай №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 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Пример №2. Необходимо перемножить два знаковых числа: ((+7)∙ (-3) = (-21)). Для удобства возьмем длину разрядной сетки равную четырем битам, а именно: Х = (+7) – множимое; Y = (-3) – множитель; Z = (-21) – произведение. Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением. То есть длина разрядной сетки произведения в два раза больше множимого и множителя. Алгоритм умножения приведен в табл. 4.7.
Таблица 4.7 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Пример №3. Необходимо перемножить два знаковых числа: ((-7)∙ (+3) = (-21)). Для удобства возьмем длину разрядной сетки равную четырем битам, а именно: Х = (-7) – множимое; Y = (+3) – множитель; Z = (-21) – произведение. Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением. То есть длина разрядной сетки произведения в два раза больше множимого и множителя. Алгоритм умножения приведен в табл. 4.8.
Таблица 4.8 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Пример №4. Необходимо перемножить два знаковых числа: ((-7)∙ (-3) = (+21)). Для удобства возьмем длину разрядной сетки равную четырем битам, а именно: Х = (-7) – множимое; Y = (-3) – множитель; Z = (+21) – произведение. Если (X) и (Y) равняется четырем битам, то как было отмечено выше (Z) должно быть восьмиразрядным значением. То есть длина разрядной сетки произведения в два раза больше множимого и множителя. Алгоритм умножения приведен в табл. 4.9.
Таблица 4.9 - Алгоритм умножения со сдвигом вправо двоичных знаковых чисел
Лекция № 12 (90-минут)
|