
- •Датчик сигналов на сдвиговом регистре
- •Структурная схема микропрограммного устройства управления
- •Восстановление символической записи команды по ее машинному представлению
- •Основные режимы работы мультипрограммной эвм
- •Пакетный режим
- •Режим разделения времени
- •Режим реального времени
- •Сокращение потерь времени при использовании сегментно-страничной организации памяти в персональной эвм
- •Учебники к курсу
- •Список литературы
- •Фал одного аргумента
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Логическая равнозначность
- •Импликация
- •Эквивалентности
- •Сложение по mod 2
- •Правило де Моргана
- •Понятие функциональной полноты фал
- •Минимизация фал и ограничения при ее рассмотрении
- •Понятие покрытия
- •Метод минимизации фал по Квайну
- •Функции 4-х переменных
- •Свойства диаграмм Вейча
- •Синтез переключательных функций в одноэлементном базисе Операция (стрелка) Пирса
- •Операция штрих Шеффера
- •Минимальные конъюнктивные нормальные формы
- •Перевод чисел из одной системы счисления в другую, когда одно основание является целой степенью другого.
- •Плавающая запятая
- •Выполнение арифметических операций над числами, представленными с фиксированной запятой.
- •Передача.
- •Преобразование.
- •Обратный код
- •Умножение чисел со старших разрядов в прямом коде
- •Умножение с младших разрядов в прямом коде
- •Замечание.
- •Умножение с младших разрядов в дополнительном коде
- •Умножение со старших разрядов в дополнительном коде
- •Деление в дополнительном (обратном) кодах со сдвигом и автоматическим восстановлением остатка
- •Сложение и вычитание
- •Десятичные двоично-кодированные системы.
- •Архитектура классической эвм Структура эвм
- •Представление данных в эвм
- •Организация оперативной памяти
Умножение чисел со старших разрядов в прямом коде
Пусть два числа X и Y представлены с фиксированной запятой в виде:
[X]пк= sign X.x1x2...xn– множимое
[Y]пк= sign Y.y1y2...yn– множитель
Представим множитель в виде:
[Y]пк= sign Y. (y1*2-1+ y2*2-2+ ... + yn*2-n)
Тогда:
[Z]пк= [X]пк*[Y]пк= sign Z. |X| (y1*2-1+ y2*2-2+ ...+ yn*2-n) =
= sign Z. (|X|*y1*2-1 + |X|*y2*2-2 + ... + |X|*yn*2-n) =
= sign Z. (|X|*2-1*y1 + |X|*2-2*y2 + ... + |X|*2-n*yn)
Это есть аналитическая запись алгоритма умножения двух чисел, начиная со старшихразрядов множителя.
Алгоритм:
Множимое сдвигается вправо на 1 разряд
Анализируется цифра множителя. Если она – нуль, то частичное произведение не суммируется, а если она – единица, то частичное произведение добавляется к общему результату.
Последовательность операций по пунктам 1 и 2 продолжается "n" раз.
Знак произведения находится независимо от получения цифровой части по формуле:
sign Z = sign
X
sign Y
Пример:
Видно, что в общем случае нужно иметь для точного результата сетку с числом разрядов, равным сумме разрядностей сеток сомножителей.
Если нужно получать произведение с точностьюне хуже, чем 2-n, то достаточно иметь не удвоенную величину разрядной сетки, а лишь увеличенную на
d = log2n разрядов
Умножение с младших разрядов в прямом коде
Напишем выражение для произведения двух чисел в несколько изменённом виде, а именно:
[Z]пк= [X]пк*[Y]пк=
= sign Z.(|X|*y1*2-1+ |X|*y2*2-2+... + |X|*yn*2-n ) =
= sign Z.( |X|*2-1*y1+ 2-1(|X|*2-1*y2+ 2-1(|X|*2-1*y3+ (...)))) =
= sign Z. ((...(( |X|*yn*2-1+ |X|*yn-1 )2-1+ |X|*yn-2 )2-1+ ... +
+ |X|*y2)2-1+ |X|*y1)*2-1
Это выражение называется преобразованием по схеме Горнера и задаёт алгоритм умножения с младших разрядов множителя.
Таким образом, для умножения должна выполняться следующая последовательность действий:
Анализируется младшая цифра множителя. Если она равна "1", то множимое участвует в формировании части произведения. В противном случае – не участвует.
Полученное частичное произведение сдвигается вправо на 1 разряд.
Операции по пунктам 1 и 2 выполняются до старшего разряда.
Пример:
signZ=
1
1 = 0
[Z]пк= 0.10000100
Замечание.
Для получения произведения с точностью не ниже, чем 2-nнужно иметь только "n"– разрядную сетку.
Итак, видим, что для получения произведения как при умножении со старших,так и младших разрядов необходимо выполнять две микрооперации: суммирование чисел в позиционной системе счисления и сдвига.
Однако, известно, что числа могут быть представлены в различных кодах(это, прежде всего, отрицательные числа).
Мы уже знаем, как выполняется операция суммирования чисел (в том числе и сразными знаками).
Однако микрооперация сдвига имеет некоторые особенности:
Сдвиг вправо:
Сдвиг влево возможен только в случае, если сдвинутое число меньше единицы по модулю:
Исходные числа:
Если чисто формально сделать преобразование выражения некоторого числа, записанного в прямом коде до выполнения сдвига и после выполнения микрооперации сдвига, в обратный модифицированный код, то:
То есть при сдвиге вправо отрицательного числа старшие разряды заполняются единицами. При сдвиге влево в старшие и младшие разряды пишутся единицы.
Пользуясь аналогичными правилами, нетрудно установить, что при сдвиге влево отрицательного числа в модифицированном дополнительном коде младшие разряды сдвинутого числа нужно заполнить нулями.