умножение чисел в дополнительном коде

Умножение чисел с фиксированной запятой в прямом и дополнительном кодах

Умножение с младших разрядов множителя чисел, заданных в дополнительном коде

При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

умножение чисел в дополнительном коде. eff12d779d75a7388aa2adcf586c421d. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-eff12d779d75a7388aa2adcf586c421d. картинка умножение чисел в дополнительном коде. картинка eff12d779d75a7388aa2adcf586c421d. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:( 8.4)

где y0 – знак множителя;

yn+1 – разряд, дополняющий множитель справа; для дополнительного кода yn+1 ≡ 0 при любом значении знака Yдк.

Так же, как и в предыдущем алгоритме, (yi+1-yi) может принимать три разных значения: (-1), (0), (+1), исходя из чего на каждом шаге вычислений к полученному на предыдущем шаге значению СЧП добавляется Xдк, ноль или (-Xдк) соответственно.

Следует отметить, что, в отличие от аналогичного способа умножения модулей сомножителей в прямом коде, здесь на последнем шаге сдвига вправо нет.

Пример 8.5.

Выполнить умножение с младших разрядов множителя следующих чисел с фиксированной запятой, заданных в дополнительном коде: Xдк = 0.1100; Yдк = 0.0111

Решение.

умножение чисел в дополнительном коде. 8 7 3. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 7 3. картинка умножение чисел в дополнительном коде. картинка 8 7 3. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Пример 8.6.

Перемножим с младших разрядов самые большие (по модулю) числа, которые можно представить в дополнительном коде: Xдк = 0.1111; Yдк = 1.0000.

Решение.

умножение чисел в дополнительном коде. 8 7 4. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 7 4. картинка умножение чисел в дополнительном коде. картинка 8 7 4. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Выполним проверку.

Это соответствует ожидаемому результату.

Выполним проверку.

Это соответствует ожидаемому результату.

Краткие итоги

В данной лекции рассмотрены способы умножения чисел с фиксированной запятой, заданных в прямом и дополнительном кодах. Рассмотрено умножение положительных и отрицательных чисел, заданных в прямом и дополнительном кодах, на 2 ±k как арифметический или логический сдвиг соответствующего числа. Показана связь различных алгоритмов умножения с используемой аппаратурой.

Источник

Умножение чисел с фиксированной запятой в прямом и дополнительном кодах

Умножение со старших разрядов множителя чисел, заданных в прямом коде

Напомним, что при реальной записи числа в памяти ЭВМ какие-либо символы, отделяющие знак от цифровой части числа, отсутствуют. Так что в данном случае мы имеем дела с пятиразрядным числом, включающим знак и четыре цифровых разряда.

Так как в прямом коде знак произведения и его модуль формируются отдельно, то следует обсудить лишь вопросы, касающиеся количества разрядов, отводимых под хранение мантисс сомножителей и мантиссы произведения.

Мы уже отмечали, что произведение следует получать в 2n-разрядной сетке, где n – количество разрядов у операндов.

Умножение со старших разрядов множителя заключается в том, что за время умножения на один разряд множителя происходит два действия:

В силу того, что в операции должны участвовать операнды одинаковой разрядности, а разрядность результата, равна 2n, то и умножение чисел в дополнительном коде. 2aa636102e6144b6c287672ec23d3f91. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2aa636102e6144b6c287672ec23d3f91. картинка умножение чисел в дополнительном коде. картинка 2aa636102e6144b6c287672ec23d3f91. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:изначально должен храниться в регистре длиной 2n, в котором младшие n позиций заполнены нулями. Также изначальное значение СЧП тоже должно быть равно нулю и изначально все ее позиции должны быть заполнены нулями. Для СЧП может быть выбран обычный регистр хранения: исходя из формулы (8.2) его значение сдвигам не подвергается.

Регистр, хранящий умножение чисел в дополнительном коде. 0c0349c41878a96654244421f1e03453. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-0c0349c41878a96654244421f1e03453. картинка умножение чисел в дополнительном коде. картинка 0c0349c41878a96654244421f1e03453. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:, в процессе выполнения умножения интересен не как единое целое, а как набор отдельных разрядов, хранящих значения yi, использующихся при формировании очередного СЧП. Получение очередного значения yi в следующем такте формирования СЧП может быть выполнено разнообразными схемотехничекими решениями, наиболее рациональным из которых представляется хранение умножение чисел в дополнительном коде. 0c0349c41878a96654244421f1e03453. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-0c0349c41878a96654244421f1e03453. картинка умножение чисел в дополнительном коде. картинка 0c0349c41878a96654244421f1e03453. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:в n-разрядном регистре сдвига, его сдвиге в сторону старших разрядов после анализа очередного разряда и снятии старшего разряда этого регистра в каждом такте для анализа очередного разряда yi.

Таким образом, мы получаем следующие схемотехнические требования к регистрам, которые хранят модули операндов и результата:

Пример 8.2.

Умножить два числа с фиксированной запятой, заданных в прямом коде, со старших разрядов множителя: Xпк = 1.0110, Yпк = 0.1010.

Исходя из вышесказанного, выполнение данного примера будет складываться из следующих этапов.

умножение чисел в дополнительном коде. d3fc6019b01433b85900efc37f9ac479. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-d3fc6019b01433b85900efc37f9ac479. картинка умножение чисел в дополнительном коде. картинка d3fc6019b01433b85900efc37f9ac479. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

умножение чисел в дополнительном коде. 8 5 1. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 5 1. картинка умножение чисел в дополнительном коде. картинка 8 5 1. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Так как в формировании произведения участвует умножение чисел в дополнительном коде. 2aa636102e6144b6c287672ec23d3f91. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2aa636102e6144b6c287672ec23d3f91. картинка умножение чисел в дополнительном коде. картинка 2aa636102e6144b6c287672ec23d3f91. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:, сдвинутый на соответствующее число разрядов вправо, то для наглядности будем представлять его в виде отдельного столбца значений.

умножение чисел в дополнительном коде. 8 5 2. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 5 2. картинка умножение чисел в дополнительном коде. картинка 8 5 2. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

На основе данного примера рассмотрим еще один момент, отражающий связь между используемым при выполнении арифметических действий алгоритмом и особенностями организации ЭВМ. При умножении со старших разрядов множителя чисел, заданных в прямом коде, к значению СЧП, полученному на очередном шаге, в зависимости от значения очередного разряда yi добавляется либо умножение чисел в дополнительном коде. 2aa636102e6144b6c287672ec23d3f91. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2aa636102e6144b6c287672ec23d3f91. картинка умножение чисел в дополнительном коде. картинка 2aa636102e6144b6c287672ec23d3f91. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:, сдвинутый на соответствующее количество разрядов вправо, либо ноль. Добавления ноля, казалось бы, только замедляет выполнение операции (в половине случаев такое сложение бессмысленно). Однако, и тот, и другой вариант действий может быть использован. Первый вариант носит название варианта без пропуска такта суммирования, а второй, соответственно, с пропуском такта суммирования.

В качестве преимущества первого варианта мы отметили устранение операции суммирования с нулем, которое не приводит к изменению предыдущего значения СЧП. Но при этом у нас изменяется регулярность последовательности тактов выполнения операции умножения, а само значение yi должно быть передано и проанализировано устройством управления компьютера, которое является сложной и нерегулярной схемой. В то же время прибавление нуля к СЧП (при yi = 0) можно осуществить достаточно просто. Фрагмент такого действия показан на Рис. 8.6. Более подробно арифметико-логическое устройство, реализующее такой алгоритм умножения, показано в [ ].

умножение чисел в дополнительном коде. 8 6. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 6. картинка умножение чисел в дополнительном коде. картинка 8 6. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Умножения с младших разрядов множителя чисел, заданных в прямом коде

Данное умножение реализуется согласно формуле (8.3). Суть этой формулы проста: к СЧП, полученной на предыдущем шаге добавляется умножение чисел в дополнительном коде. 2aa636102e6144b6c287672ec23d3f91. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2aa636102e6144b6c287672ec23d3f91. картинка умножение чисел в дополнительном коде. картинка 2aa636102e6144b6c287672ec23d3f91. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:, умноженный на значение соответствующего разряда yi, а затем полученное новое значение сдвигается вправо на 1 разряд. Нюанс этого алгоритма как раз и заключается в этом сдвиге, завершающем формирование очередного значения СЧП.

умножение чисел в дополнительном коде. 8 7. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 7. картинка умножение чисел в дополнительном коде. картинка 8 7. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Пример 8.3.

Выполнить умножение с младших разрядов множителя следующих чисел с фиксированной запятой, заданных в прямом коде:

Источник

Умножение чисел с фиксированной запятой в прямом и дополнительном кодах

Умножение чисел с фиксированной запятой имеет несколько вариантов, каждый из которых влияет на те или иные характеристики ЭВМ и, соответственно, должен быть принят во внимание при ее проектировании или анализе ее работы.

Умножение чисел c фиксированной запятой на 2 в степени ±k

Умножение двоичных чисел на целую степень числа два, казалось бы, не представляет существенных сложностей. Но при машинном выполнении этого действия необходимо учитывать ряд моментов, среди которых форма представления числа, разрядность используемой машинной сетки, код, в котором записано данное число и некоторые другие.

Данное действие используется как при выполнении операции умножения, так и деления чисел в различных кодах и с использованием разных алгоритмов.

Умножение чисел c фиксированной запятой на 2 в степени +k

Данное действие соответствует увеличению двоичного числа в k раз, что равносильно его сдвигу влево на k разрядов. При этом необходимо учесть следующие моменты:

Для положительных чисел их представление в прямом, обратном и дополнительном кодах совпадают (Рис.8.1).

умножение чисел в дополнительном коде. 8 1. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 1. картинка умножение чисел в дополнительном коде. картинка 8 1. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Поэтому умножение числа на 2 +k для всех кодов происходит аналогичным образом. Очевидно, что для положительного числа данное действие приведет к переполнению (число превысит единицу) лишь при условии k > s.

Освобождающиеся справа разряды заполняются нулями (Рис.8.2):

умножение чисел в дополнительном коде. 8 2. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 2. картинка умножение чисел в дополнительном коде. картинка 8 2. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Для отрицательных чисел умножения на 2 +k зависит от того, в каком коте это число представлено.

Для чисел, записанных в прямом коде, умножение не приведет к переполнению разрядной сетки в случае, если первые s разрядов числа были единицами, и выполнялось условие s > k (Рис.8.3). При этом освобождающиеся справа разряды заполняются нулями.

умножение чисел в дополнительном коде. 8 3. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 3. картинка умножение чисел в дополнительном коде. картинка 8 3. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Для чисел, заданных в прямом коде, выполняется, так называемый, логический сдвиг, при котором знак числа остается на месте, а освобождающиеся за знаком позиции заполняются нулями. При этом цифры, выходящие за пределы разрядной сетки, теряются (Рис.8.4).

умножение чисел в дополнительном коде. 8 4. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 4. картинка умножение чисел в дополнительном коде. картинка 8 4. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Цифры, выходящие за пределы разрядной сетки, теряются (Рис.8.5).

умножение чисел в дополнительном коде. 8 5. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-8 5. картинка умножение чисел в дополнительном коде. картинка 8 5. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Умножение чисел, заданных в прямом коде

Рассмотрим вариант умножения операндов, представленных в прямом коде. Числа с фиксированной запятой в прямом коде записываются согласно выражению (7.1). Поэтому запишем множимое как умножение чисел в дополнительном коде. 00c9a231e7a03a56775c59276c7ddc31. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-00c9a231e7a03a56775c59276c7ddc31. картинка умножение чисел в дополнительном коде. картинка 00c9a231e7a03a56775c59276c7ddc31. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:, а множитель как умножение чисел в дополнительном коде. 9fee6b726090f07dfc1d17a539042684. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-9fee6b726090f07dfc1d17a539042684. картинка умножение чисел в дополнительном коде. картинка 9fee6b726090f07dfc1d17a539042684. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:. Тогда произведение нам необходимо получить в виде

умножение чисел в дополнительном коде. 2736c7461f435e03b24193ae432a3b66. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2736c7461f435e03b24193ae432a3b66. картинка умножение чисел в дополнительном коде. картинка 2736c7461f435e03b24193ae432a3b66. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

и действие распадается на два самостоятельных действия: получение знака произведения и получение модуля его числовой части.

Знак произведения определяется обычным образом как сумма по модулю 2 знаков сомножителей:

умножение чисел в дополнительном коде. 2102a2c60c7e6902544f1fcf98af1726. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-2102a2c60c7e6902544f1fcf98af1726. картинка умножение чисел в дополнительном коде. картинка 2102a2c60c7e6902544f1fcf98af1726. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:( 8.1)

Теперь запишем формулу (точнее, формулы) для вычисления модуля произведения.

умножение чисел в дополнительном коде. 00123d1b3bf7c086a7ef448ec7ea2baf. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-00123d1b3bf7c086a7ef448ec7ea2baf. картинка умножение чисел в дополнительном коде. картинка 00123d1b3bf7c086a7ef448ec7ea2baf. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Преобразуя эту формулу, получим

умножение чисел в дополнительном коде. eb9e567af424ec608d23b4bb54bcaa61. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-eb9e567af424ec608d23b4bb54bcaa61. картинка умножение чисел в дополнительном коде. картинка eb9e567af424ec608d23b4bb54bcaa61. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:( 8.2)

которая приводит к алгоритму умножения со старших разрядов множителя, или к формуле

умножение чисел в дополнительном коде. 5d8d4a5a75fe0d10197ce105323fd675. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-5d8d4a5a75fe0d10197ce105323fd675. картинка умножение чисел в дополнительном коде. картинка 5d8d4a5a75fe0d10197ce105323fd675. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:( 8.3)

которая показывает последовательность действий при умножении с младших разрядов множителя.

Прежде чем подробно рассматривать примеры, иллюстрирующие каждый из этих алгоритмов, остановимся на некоторых общих для обоих алгоритмов моментах.

Во-первых, отметим, что мы имеем дело с двоичными числами. В связи с этим, yi может принимать только два разных значения: «ноль» либо «единица». В первом случае величина умножение чисел в дополнительном коде. 0c1786af47edbd8fcdbd92eb60af5100. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-0c1786af47edbd8fcdbd92eb60af5100. картинка умножение чисел в дополнительном коде. картинка 0c1786af47edbd8fcdbd92eb60af5100. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:не участвует в формировании частичного произведения на соответствующем шаге умножения, а во втором случае – участвует.

Такой сдвиг реализуется на основе сдвигового регистра (см. «Схемотехническая реализация элементов вычислительной техники» ). При этом разряды, выходящие за пределы разрядной сетки, теряются (но в полноразрядной сетке такого произойти не может).

Пример 8.1.

умножение чисел в дополнительном коде. 9e84510e25fc690e80f9b77fe99bc3e4. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-9e84510e25fc690e80f9b77fe99bc3e4. картинка умножение чисел в дополнительном коде. картинка 9e84510e25fc690e80f9b77fe99bc3e4. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

умножение чисел в дополнительном коде. cb7f2c52a992946243b10d623f1fdc66. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-cb7f2c52a992946243b10d623f1fdc66. картинка умножение чисел в дополнительном коде. картинка cb7f2c52a992946243b10d623f1fdc66. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

В-третьих, следует сказать о разрядности используемых в операции операндов, произведения и разрядной сетки, в которой необходимо проводить необходимые действия по его получению.

ЭВМ работает с операндами равной длины. Если длины операндов не совпадают, то операнд, имеющий меньшую длину, расширяется знаком до разрядности операнда с большей длиной. Поэтому будем считать, что оба операнда имеют длину в n числовых разрядов. В этом случае мы получим 2n разрядное произведение (не считая одного разряда, отводимого под знак числа).

Получение результата с точностью, превосходящей точность исходных данных, бессмысленно. В литературе показано [. ], что в случае n разрядных операндов необходимая точность получается для чисел в формате с фиксированной запятой для результата в укороченной разрядной сетке, содержащей n + d разрядов, где d ≥ log2n.Так, для чисел, имеющих четыре разряда в цифровой части, можно проводить умножение в разрядной сетке 4 + log24 = 6 разрядов. Но, во-первых, это потребует проведения округления на каждом шаге вычисления произведения. А, во-вторых, возникают вопросы: «Что делать с полученным числом, которое имеет длину больше, чем длина операнда, но меньше, чем удвоенная длина операнда? Как его хранить в памяти? Как использовать в последующих операциях?» В силу этого и ряда других моментов укороченная разрядная сетка при выполнении так называемых «длинных» операций (умножения и деления) в универсальных компьютерах не применяется, и мы при рассмотрении примеров выполнения умножения и деления ею пользоваться не будем.

Источник

Умножение чисел в дополнительном коде с автоматической коррекцией

Этот алгоритм разработан Бутом и является универсальным для умножения чисел в ДК. Сомножители участвуют в операции со знаковыми разрядами, которые рассматриваются как цифровые разряды числа. Результат получается сразу в дополнительном коде со знаком.

В процессе умножения анализируются две смежные цифры множителя: та, на которую выполняется умножение в данном такте – m1, и соседняя младшая цифра – m2. В двоичном множителе этой паре соответствуют четыре возможных набора – «00», «01», «10», «11», каждый из которых требует выполнения следующих действий:

1. набор «01» требует сложения множимого с предыдущей суммой частичных произведений;

2. набор «10» требует вычитания множимого из предыдущей суммы частичных произведений;

3. наборы «00» и «11» не требуют ни сложения, ни вычитания, так как частичное произведение равно нулю.

В цикле умножения в каждом такте выполняются соответствующие сдвиги на один разряд. При этом могут использоваться все четыре способа умножения с некоторыми особенностями:

1. в I способе не следует выполнять последний сдвиг суммы частичных произведений;

2. в IV способе не выполняется первый сдвиг множимого.

Это объясняется тем, что в этих тактах реализуется умножение не на цифровой, а на знаковый разряд числа.

Кроме того, при выполнении алгоритма умножения с автоматической коррекцией следует помнить о правилах сдвига отрицательных чисел в ДК: при сдвиге влево освобождающиеся младшие разряды заполняются нулями, при сдвиге вправо освобождающиеся старшие разряды заполняются единицами, т.е. реализуется арифметический сдвиг числа.

С дк = 1,101001 М = 2 6

умножение чисел в дополнительном коде. image043. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image043. картинка умножение чисел в дополнительном коде. картинка image043. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:Множитель умножение чисел в дополнительном коде. image044. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image044. картинка умножение чисел в дополнительном коде. картинка image044. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:МножимоеСумма ЧППримечания
0,1110010 0,01110011,111111 101001 1,111111 0100100,000000 000000 0,000000 010111 0,000000 010111Вычитание Сдвиги
0,0011100 0,00011101,111110 100100 1,111101 0010000,000000 010111 1,111111 010010 1,111111 101001Сложение Сдвиги Сдвиги
1,111111 101001 0,000010 111000Вычитание
0,00001111,111010 0100000,000010 100001Сдвиги
0,0000011 0,00000011,110100 100000 1,101001 000000Сдвиги Сдвиги
0,0000001,010010 0000000,000010 100001 1,101001 000000 1,101011 100001Сложение Сдвиги

Ответ:

Проверка:

Задание № 3 Оба операнда отрицательны. Представить их в форме с ФЗ в дополнительном коде и перемножить их 3 способом, используя алгоритм с простой коррекцией. Проверить результат.

Устройства, которые хранят операнды, регистры, имеют следующую разрядность:

1. регистры множителя и множимого – n-разрядные;

2. регистр частичных произведений – 2n-разрядный.

Суммирование множимого следует выполнять в младшие n разрядов регистра суммы частичных произведений.

Особенность III способа умножения состоит в том, что в последнем такте не следует выполнять сдвиг в регистре сумм частичных произведений.

Алгоритм умножения двоичных чисел в ДК с простой коррекцией:

1. определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей.

2. перемножить модули сомножителей, представленных в ДК, одним из четырех способов – получить псевдопроизведение.

3. если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам:

· если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя;

· если оба сомножителя отрицательны, к псевдопроизведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды.

4. Присвоить модулю произведения знак из п.1 данного алгоритма.

D пк = 1,111001 М = 2 6

умножение чисел в дополнительном коде. image045. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image045. картинка умножение чисел в дополнительном коде. картинка image045. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом: умножение чисел в дополнительном коде. image046. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image046. картинка умножение чисел в дополнительном коде. картинка image046. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:С дк = 0,101001 – модуль множимого

умножение чисел в дополнительном коде. image047. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image047. картинка умножение чисел в дополнительном коде. картинка image047. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом: умножение чисел в дополнительном коде. image048. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image048. картинка умножение чисел в дополнительном коде. картинка image048. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:D дк = 0,000111 – модуль множителя

умножение чисел в дополнительном коде. image049. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image049. картинка умножение чисел в дополнительном коде. картинка image049. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:Знак произведения: 1 + 1 = 0

Псевдопроизведение = 0, 000100 011111

Коррекция (складываем модули операндов):

умножение чисел в дополнительном коде. image051. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-image051. картинка умножение чисел в дополнительном коде. картинка image051. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:1, 010100 011111

Ответ:

Проверка:

Задание №4 Знаки операндов: С>0, D >0. Представить числа в форме с ПЗ в разрядной сетке условной машины. При перемножении мантисс использовать 4 способ умножения. Результат представить в той же разрядной сетке. Произвести проверку.

Устройства, которые хранят операнды, регистры, имеют следующую разрядность:

1. регистр множителя – n-разрядный;

2. регистры множимого и частичных произведений – 2n-разрядный.

Первоначально множимое помещается в старшие разряды регистра, а затем в каждом такте сдвигается на один разряд вправо.

Особенность IV способа умножения состоит в том, что перед началом цикла умножения следует множимое сдвинуть на один разряд вправо.

Источник

Обратный и дополнительный коды двоичных чисел

умножение чисел в дополнительном коде. l4 image002. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-l4 image002. картинка умножение чисел в дополнительном коде. картинка l4 image002. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:умножение чисел в дополнительном коде. equation. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-equation. картинка умножение чисел в дополнительном коде. картинка equation. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом: умножение чисел в дополнительном коде. distance. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-distance. картинка умножение чисел в дополнительном коде. картинка distance. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:умножение чисел в дополнительном коде. projection image013. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-projection image013. картинка умножение чисел в дополнительном коде. картинка projection image013. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом: умножение чисел в дополнительном коде. piramid. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-piramid. картинка умножение чисел в дополнительном коде. картинка piramid. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом: умножение чисел в дополнительном коде. line. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-line. картинка умножение чисел в дополнительном коде. картинка line. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:умножение чисел в дополнительном коде. p image002. умножение чисел в дополнительном коде фото. умножение чисел в дополнительном коде-p image002. картинка умножение чисел в дополнительном коде. картинка p image002. При умножении чисел, заданных в дополнительном коде, с младших разрядов множителя, так же как и при умножении со старших разрядов множителя в формировании произведения участвует все число, включая его знак. Произведение также получается в дополнительном коде со знаком. Соответствующая формула умножения выглядит следующим образом:

Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.

3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.

Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *