КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Операция деления в прямых кодах
Деление двоичных чисел Алгоритм умножения непосредственно в дополнительных кодах. Числа из памяти принимаются в АЛУ в дополнительных кодах и непосредственно в этих же кодах вычисляются псевдопроизведение С`=[А]д*[В]д; [B]д = b0*20+ b1*2-1+ b2*2-2+...+ bi*2-i + bi+1*2-(i+1) +…+ bn*2-n В разряде b0*20 представлен знак множителя. Особенности алгоритма: Умножение выполняется в дополнительных кодах. Знаки чисел участвуют в процессе умножения, и знак результата получается автоматически после окончания вычислений. В каждом такте умножения анализируются два разряда множителя: bi, bi+1, и в зависимости от их содержимого формируется определенное значение частного произведения в i-том такте (см. табл.1.4). Процесс умножения выполняется аналогично рассмотренному выше алгоритму умножения в прямых кодах от младших разрядов множителя со сдвигом суммы частных произведений вправо. Произведение получается в дополнительном коде и записывается в память без всяких преобразований. Время умножения увеличивается на один такт сложения за счет того, что выполняется умножение и на знаковый разряд множителя. Tу мн.д.к. = Tумн.п.к. + tсл.
Таблица 1.4
. Рассмотрим пример: C=A*B; А=7/8 = 0.111; B=-5/8 = -0.101; [А]п=0.111; [В]д =1.0110; C=-35/64 [C]п = 1.100011 [-А]д =1.001 [C]д = 1.011101 Вычисления представим в табл. 1.5. Поясним табл. 1.5. В первом такте умножения рассматривается первая пара разрядов множителя bnbn+1 = b3b4 = 10, во втором такте – вторая пара – b2b3 = 11, в третьем такте – пара b1b2 = 01, в четвертом такте – пара b0b1 = 10. Следует также обратить внимание, что при сдвиге суммы частных произведений вправо цифра в разряде знака не изменяется (так называемый, арифметический сдвиг). В последнем такте после суммирования сдвиг вправо не выполняется (вес разряда b0 = 20). Как видно из табл.1.5, произведение отрицательное, получилось сразу в дополнительном коде и равно значению, которое было вычислено для контроля перед началом умножения по рассматриваемому алгоритму.
Таблица 1.5
Рассматриваем операцию деления двоичных чисел, представленных в форме с фиксированной запятой. В общем случае это может быть деление мантисс. Определим постановку задачи: C =A / B; |A| < 1; |B| < 1; A ≠ 0; B ≠ 0. Используются два основных способа: - деление чисел, представленных в прямых кодах; - деление чисел, представленных в дополнительных кодах. Отметим следующие основные особенности алгоритма: 1) К началу деления числа должны быть представлены в прямых кодах; 2) Операция деления выполняется над модулями; 3) Знак частного определяется логическим путем; 4) Операция сравнения модулей может выполняться с использованием любого из рассмотренных выше способов вычитания; 5) Алгоритм в основных чертах соответствует алгоритму деления вручную. Основное отличие состоит в том, что на каждом шаге деления вместо сдвига влево частичной разности (как это делается при ручном счете) сдвигается вправо делитель. 6) На каждом i-том шаге сравниваются по модулю частичная разность Ri и делитель |Bi|. При этом последовательно будут получаться цифры частного. Если | Ri|<|B|, то C[i]=0; | Ri+1|=| Ri|. Если | Ri|≥|B|, то C[i]=1; | Ri+1|=| Ri|-|Bi|, где Ci — цифра частного, полученная на i-том шаге. Предлагаемый алгоритм рассмотрим подробно на числовом примере А=-3/16 [А]п=1.0011; |A|=.0011 B=12/16 [В]п= 0.1100; |B|=.1100 Операцию сравнение будем выполнять в дополнительном модифицированном коде, для этого запишем [-|B|]дм = 11.0100 Пример запишем в виде таблицы 1.6. Таблица 1.6
Как следует из этого пример, на очередном такте сравнения сдвигается вправо на 1 разряд делитель (умножается на 2-1). Цифры частного получаются,начиная со старшего разряда, и заносятся в регистр результата с помощью операции сдвига влево. Поскольку после второго такта частичная разность R3=0, очевидно, что следующие цифры частного также будут нули. Итак, |С|= 0.0100 = 1/4. Знак произведения — отрицательный, окончательный ответ: С = 1.0100.
Дата добавления: 2015-05-09; Просмотров: 703; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |