Рефераты. Выполнение арифметических операций в АЛУ

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

Деление мантисс можно разделить на следующие этапы:

1.      Исходное значение частичного остатка полагается равным старшим разрядам делимого;

2.      Частичный остаток удваивается путём сдвига на 1 разряд влево, при этом в освободившийся разряд заносится очередная цифра делимого из разрядов младшей половины делимого. Так как для данного алгоритма деления мантисс было условно принято, что разряды младшей половины делимого равны 0, то при сдвигах частичного остатка влево в освободившиеся разряды всегда заносятся нули;

3.      Если частичный остаток положительный
(См[0]=0), то делитель вычитается из частичного остатка. Если же частичный остаток отрицательный (См[0]=1), то делитель суммируется с частичным остатком;

4.      Если полученный частичный остаток положительный (См[0]=0), то очередной цифре мантиссы частного присваивается значение 1 (Рг2’[31]:=1), иначе 0 (Рг2’[31]:=0);

5.      Пункты 2,3 и 4 повторяются до получения всех цифр модуля частного.

Мантисса частного, полученная с помощью данного алгоритма, будет гарантированно нормализованной, так как мантисса делителя может быть больше мантиссы делимого не более чем в 2 раза (это следует из того, что мантиссы делимого и делителя изначально нормализованы). Отсюда следует, что мантисса частного будет больше или равна 0,5 (старший разряд мантиссы равен 1), но меньше 1.

Формирование окончательного результата производится в блоках с 23 по 31. Для получения окончательного порядка результата анализируются значения триггера переполнения Тг1 и Сч1[0¸1]. Если Тг1=1 и разряды Сч1[0¸1]=01, то это означает, что результат деления можно принять равным нулю, так как произошло отрицательное переполнение порядка. Если триггер переполнения Тг1=0 и разряды Сч1[0¸1]=10, то происходит прерывание по положительному переполнению. Если же переполнения порядка нет, то в РгСм формируется окончательный результат операции деления. Если значения в триггерах знаков делимого и делителя не равны между собой, то знак частного – отрицательный, иначе знак частного – положительный, т.е. если ТгЗн1 ¹ ТгЗн2, то РгСм[0]:=1, иначе РгСм[0]:=0. Смещённый порядок, находящийся в Сч1[1¸7], заносятся в соответствующие разряды РгСм[1¸7], а мантисса частного, находящаяся в См[8¸31], заносятся в соответствующие разряды РгСм[8¸31].

Пример: Пусть X = 24,5 Y = 11,2. Вычислить Z = X / Y, где X, Y и Z – числа с плавающей запятой. При делении использовать алгоритм деления чисел с плавающей запятой без восстановления остатка.

Рассмотрим выполнение примера поэтапно.

Приём операндов X и Y. На данном этапе происходит приём операндов в формате чисел с плавающей запятой. Делимое X заносится в Рг2, делитель Y в Рг1. Их знаки фиксируются соответственно в ТгЗн2 и ТгЗн1. Делимое X = 24,5 в формате числа с плавающей запятой, показано на рис. 4.9.

Веса разрядов

26

25

24

23

22

21

20

24

23

22

21

20

2-1

2-2

2-3

2-4

2-5

0

1

0

0

0

1

0

1

1

1

0

0

0

1

0

0

0

0

знак

смещенный порядок

мантисса

Рис. 4.9. Делимое X = 24,5 в формате числа с плавающей запятой

 

 

Сделаем проверку представления делимого (то есть произведём обратное преобразование). Необходимо напомнить, что если знаковый разряд смещённого порядка равен 1 (см. рис. 4.9), то порядок числа (несмещенный) положительный, иначе – отрицательный. Для преобразования смещённого порядка в несмещённый необходимо из смещённого порядка вычесть двоичное число 1000000 (или 26). В данном случае если из смещённого порядка делимого pxсм = 1000101b вычесть 1000000b, то несмещённый порядок делимого px будет равен 0000101b, или десятичному числу 5. Делимое в полулогарифмической форме делимое можно записать как:

X = mx ´ = 0,1100010000 ´ 25 = 11000,10000 = 1 ´ 24 + 1´ ´ 23 + 0 ´ 22 + 0 ´ 21 + 0 ´ 20 + 1 ´ 2-1 + 0 ´ 2-2 + 0 ´ 2-3 + 0 ´ ´ 2-4 + 0 ´ 2-5 = 24,5,

где mx – нормализованная мантисса делимого;

px = 5 – порядок делимого (несмещённый) в
десятичном виде;

S = 2 – основание характеристики для двоичной системы счисления.

Делитель Y = 11,2 в формате числа с плавающей запятой показан на рис. 4.10.


Веса разрядов

26

25

24

23

22

21

20

23

22

21

20

2-1

2-2

2-3

2-4

2-5

2-6

0

1

0

0

0

1

0

0

1

0

1

1

0

0

1

1

0

0

знак

смещенный порядок

мантисса

Рис. 4.10. Делитель Y = 11,2 в формате числа с плавающей запятой


 


Аналогично сделаем проверку представления
делителя:

Y = mY ´ = 0,1011001100 ´ 24 = 1011,001100 = 1 ´ 23 +
+ 0 ´ 22 + 1 ´ 21 + 1 ´ 20 + 0 ´ 2-1 + 0 ´ 2-2 + 1 ´ 2-3 + 1 ´ 2-4 + 0 ´ 2-5 + + 0 ´ 2-6 » 11,2,

где mY – нормализованная мантисса делителя;

pY = 4 – порядок делителя (несмещённый) в
десятичном виде.

Проверка мантиссы делителя на равенство нулю. Так как старший разряд мантиссы делителя равен единице, то это значит, что делитель не равен нулю.

Проверка мантиссы делимого на равенство нулю. Аналогично проверяем делимое. Так как старший разряд мантиссы делимого равен единице, то это значит, что делимое не равно нулю.

Вычисление смещённого порядка частного. Для вычисления смещённого порядка частного необходимо сложить на сумматоре смещённый порядок делителя в дополнительном коде (РгА) и смещённый порядок делимого в прямом коде (РгВ). Необходимо учесть, что для сложения порядков используется дополнительно 0 разряд (см. рис. 4.11).


разряды

[0]

[1¸7]

[8¸17]

комментарий

РгА

1

0111100

0000000000

В РгА[1¸7] смещённый порядок делителя в дополнительном коде

РгВ

0

1000101

0000000000

В РгВ[1¸7] смещённый порядок делимого в прямом коде

См.

0

0000001

0000000000

В См[1¸7] порядок частного pz

Рис. 4.11. Вычисление порядка частного

 


В результате сложения на выходе сумматора См[1¸7] сформирован порядок частного. Проведём анализ значения двух старших разрядов полученного порядка с выход сумматора См[0¸1]. Так как они равны нулю, то получен положительный, не переполненный порядок. Отсутствие переполнения фиксируется триггером Тг1 (Тг1: = 0). В смещенный он преобразуется инверсией первого разряда сумматора См[1]. Итак, смещённый порядок частного в двоичном виде pz.см = 1000001. Результат из См[1¸7] заносится в разряды Сч1[1¸7], а нулевой разряд Сч1[0] обнуляется.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.