Студопедия

КАТЕГОРИИ:


Архитектура-(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

bi bi+1 Сi
     
     
   
    А

 

.

Рассмотрим пример: 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

bi,bi+-1 Сi,Si Пояснения
    0.000000 + 1.001 1.001000 1.100100   1.110010   C0=0 C1=[-А]д C0+C1 (C0+C1)*2-1= S1   C2=0 S1*2-1= S2
    + 0.111 10.101010 0.010101   1.001 1.011101   C3= [А]пр C3+S2 (C3+S2)*2-1= S3 C4= [-A]д [C]д=C4+S3

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

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

№ такта Сравнение | Ri|-|B|=| Ri|+[-| B|]д Пояснения
Такт “0” 00.0011 +11.0100 11.0111 R0=|A|; B0= [-B]д [-|B|]д |R0|<| B0|; С[0]=0; Деление возможно
Такт “1” 00.0011 +11.1010 11.1101 R1=|А0| [-|B1|]д =[-|B0|]д*2-1 |R1|<| B1|; С[1]=0;
Такт “2” 00.0011 +11.1101 00.0000 R2=|А0| [-|B2|]д =[-|B1|]д*2-1 |R2|=| B2|; С[2]=1;

 

Как следует из этого пример, на очередном такте сравнения сдвигается вправо на 1 разряд делитель (умножается на 2-1). Цифры частного получаются,начиная со старшего разряда, и заносятся в регистр результата с помощью операции сдвига влево.

Поскольку после второго такта частичная разность R3=0, очевидно, что следующие цифры частного также будут нули.

Итак, |С|= 0.0100 = 1/4.

Знак произведения — отрицательный, окончательный ответ: С = 1.0100.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 681; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.