Опубликован: 05.06.2018 | Доступ: свободный | Студентов: 688 / 171 | Длительность: 07:59:00
Лекция 8:

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

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

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

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

Z_{дк} = (... ((0 + (y_{n+1}-y_n) \bullet X_{дк}) \bullet 2^{-1} + (y_n-y_{n-1}) \bullet X_{дк}) \bullet 2^{-1} + ... + (y_1-y_0) \bullet X_{дк}), ( 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.6.

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

Решение.


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

  1. Знаки сомножителей разные. Результат получился отрицательным.
  2. |X| = 15/1610; |Y| = 16/1610; |Z| = 0.111100002 = 240/25610.

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

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

  1. Знаки сомножителей разные. Результат получился отрицательным.
  2. |X| = 15/1610; |Y| = 16/1610; |Z| = 0.111100002 = 240/25610.

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

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

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

Вопросы и задания

  1. Назовите способы умножения чисел с фиксированной запятой.
  2. Какова будет длина произведения, если один сомножитель имеет длину n разрядов, а другой – k разрядов?
  3. Возможны ли в ЭВМ случаи перемножения операндов разной длины? Если возможны, то накладываются ли на их размеры какие-либо ограничения? Если невозможны, то почему?
  4. Что такое "укороченная разрядная сетка"? Каковы ее достоинства и недостатки? Где она применяется?
  5. Почему умножения числа на 2±i равносильно его сдвигу на соответствующее число разрядов влево или вправо?
  6. Чем отличается логический сдвиг двоичного числа от арифметического?
  7. Что происходит с разрядами числа, которые при сдвиге вправо выходят за пределы разрядной сетки?
  8. В каком случае при сдвиге числа влево фиксируется переполнение результата?
  9. Каким образом определить требования к регистрам, хранящим операнды и служащим для хранения суммы частичных произведений при различных алгоритмах представления операндов и выполнения операции?
  10. Какие из алгоритмов (для чисел, представленных в прямом или дополнительном кодах, со старших или младших разрядов множителя) требуют бОльших временнЫх затрат и схемотехнических затрат?
  11. Какой коррекции должна подвергнуться схема выполнения операции умножения в укороченной разрядной сетке по сравнения с получением произведения в 2n-разрядной сетке?
  12. Выполните перемножение двух чисел 1.1011пк и 0.1011пк, представленных в прямом коде со старших и младших разрядов множителя. Сравните полученные результаты. Объясните возможные несовпадения.
  13. Выполните перемножение двух чисел 1.1011дк и 0.1011дк, представленных в дополнительном коде со старших и младших разрядов множителя. Сравните полученные результаты. Объясните возможные несовпадения. Сравните полученные результаты с результатами, полученными в задании 12.
< Лекция 7 || Лекция 8: 123 || Лекция 9 >