Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория цифровых автоматов. Учебное пособие
.pdf
91
Z
0
=
1, sign O0 = sign ;
0, sign O0 .
{
=
2 Oi + , sign Oi ;
2 Oi +[-] , sign Oi= sign .
O
i+1
{
Z
i+1
=
1, sign O
i+1
= sign ;
0, sign Oi .
{
3.8.3. Алгоритм деления чисел в дополнительном коде без
восстановления остатка (Z=X/У)
1. Делимое и делитель представляется в дополнительном коде:
Sм:= X
2. Проверяем возможность деления: если Sign Х = Sign Y, то из
делимого вычитается делитель, иначе – к делимому
прибавляется делитель.
При этом определяется знак частного следующим образом:
Условие корректности деления:
Если то деление некорректно
из-за переполнения разрядной сетки.
3. Остаток Oi удваивается сдвигом влево на 1 разряд.
, RG:= Y
доп
доп
.
4. Если знак остатка Oi не совпадает со знаком делителя, то к
нему прибавляется делитель, если знаки совпадают, то из
остатка вычитается делитель.
5. Очередная цифра частного Zi = 1, если знак остатка Оi
совпадает со знаком делителя или Zi = 0, если знак остатка Оi
не совпадает со знаком делителя
6. Пункты 3-5 повторяются до получения требуемого числа цифр
частного.
7. Знак частного получается по алгоритму Zi = Sign Z.
8. При делении в дополнительном коде возникает методическая
погрешность, для компенсации которой необходимо вводить

92
Х = - 0 1011
Х
доп
= 1 0101
sign Oi ≠ sign У
[-y]
доп
1
0 0 1 0 0
переполнения нет
1 0101
0 1101
0 0010Sм
[-y]
доп
L1(Sм)
L1(Sм)
L1(Sм)
11 0010
00 1101
11 1111
L1(Sм)
00 0110
11 0011
11 1001
L1(Sм)
Sм
11 0110
00 1101
00 0011
Sм
y
доп
10 1110
00 1101
11 1011
y
доп
Sм
00 0100
11 0011
11 0111
Sм
т.к. sign O
i
= sign У
т.к. sign O
i
≠ sign У
У = 0 1101
y
доп
= 1101
[-y]
доп
= 1 0011
0
коррекцию, которая равна: sign Z·2-n, где n – число разрядов
частного.
Возможны четыре случая:
1) X>0, У>0;
2) X<0, У>0;
3) X>0, У<0;
4) X<0, У<0.
Первый из них не представляет интереса, так как будет аналогия с
делением в прямых кодах, а для остальных случаев рассмотрим пример.
Пример 14. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X<0, У>0 (рис. 22).
Рис. 22. Пример выполнения деления чисел X
доп
<0, У
доп
>0

93
переполнения нет
L1(Sм)
Sм
11 1 1 0 0
00 1 1 0 1
00 1 0 0 1
L1(Sм)
L1(Sм)
L1(Sм)
01 0 0 1 0
11 0 0 1 1
00 0 1 0 1
Sм
00 1 0 1 0
Sм
[-y]
доп
y
доп
[-y]
доп
sign Oi ≠ sign У
L1(Sм)
11 0 0 1 1
11 1 1 0 1
11 1 0 1 0
00 1 1 0 1
00 0 1 1 1
00 1 1 1 0
11 0 0 1 1
00 0 0 0 1
Sм
Sм
y
доп
y
доп
Х = 0 1011
Х
доп
= 0 1011
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
1 0 0 1 0 0
т.к. sign O
i
≠ sign У
т.к. sign O
i
= Sign У
1
У = - 0 1101
y
доп
= 0011
[-y]
доп
= 0 1101
Коррекция: sign Z · 2-5.
Выполнив коррекцию, получим результат:
1 00100
+
0 00001
Z
= 1 00101
доп
Пример 15. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X>0, У<0 (рис. 23).
Рис. 23. Пример выполнения деления чисел X
доп
>0, У
доп
<0

94
Х = - 0 1011
Х
доп
= 1 0101
1 0101
0 1101
0 0010
00 0100
11 0011
11 0111
10 1110
00 1101
11 1011
11 0110
00 1101
00 0011
00 0110
11 0011
11 1001
11 0010
00 1101
11 1111
0
1 1 0 1 1
Sм
L1(Sм)
y
доп
Sм
L1(Sм)
L1(Sм)
L1(Sм)
L1(Sм)
Sм
Sм
Sм
y
доп
[-y]
доп
[-y]
доп
sign Oi ≠ sign У
переполнения нет
1
У = - 0 1101
y
доп
= 0011
[-y]
доп
= 0 1101
Коррекция: sign Z * 2-5.
Выполнив коррекцию, получим результат:
1 00100
+
0 00001
Z
= 1 00101
доп
Пример 16. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X<0, У<0 (рис. 24).
Рис. 24. Пример выполнения деления чисел X
доп
<0, У
доп
<0

Коррекция: sign Z * 2-5 = 0
95
Результат Z
= 0.11011.
доп
Содержательная ГСА деления чисел с фиксированной запятой
Z
= X
доп
25. Обозначим формат представления данных X
доп
/ Y
методом без восстановления остатка изображена на рис.
доп
и Y
доп
. Операнды
доп
содержат n значащих разрядов, коды чисел модифицированные, значит
числа X
доп
и Y
включают (n+2) разряда.
доп
Записи Sign Sм, Sign RGA, Sign RGB подразумевают старший
знаковый разряд соответствующего блока. Sign Sм означает два знаковых
разряда числа, записанного в регистре сумматора.
Знак результата получается в результате выполнения алгоритма.
Пояснения к рис. 25.
Вершина 2. Здесь выполняется запись операндов А и В с шин Y и Х
соответственно в RGA и RGB. Значение сумматора считается равным
нулю. Триггер знака равен «0».
Вершина 3. В сумматор поступает содержание регистра RGB.
Вершина 4. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 10. Если RGA ≠ 0, то переходим к
вершине 5.
Вершина 5. Выполняется анализ равенства знаковых разрядов RGA
и RGB. Если знаки совпадают, то переход к вершине 7, если не совпадают,
то – к вершине 6.
Вершина 6. Из содержимого сумматора Sm вычитается значение
RGА.
Вершина 7. К содержимому сумматора Sm прибавляется значение
RGА. Триггер знака устанавливается в «1».
Вершина 8. Анализ равенства знаковых разрядов Sm и RGB. Если
знаки совпадают, то переход к вершине 10, если не совпадают, то – к
вершине 9.
Вершина 9. Значение сумматора сдвигается влево на 1 разряд.
Обнуляется значение RGB. Счетчик циклов устанавливается в «n».
Вершина 10. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).

96
RG = 0
Sм: = RG В
S:=S+[-RG A]
S: = S+ RG
T sign: = 1
sign RG =
signRG
sign S =
signRG B
: = 1
S: = L1(S)
RG : = 0
: = n
sign S =
signRG
S: = L1(S)
RG : = L1(RG )
: = - 1
Sign Sм[1,2]: = T sign
= 0
sign S:=1
S: = S+Sign S*2
-n
RG : =
RG : =
S: = 0
sign: = 0
1
1
1
1
1
1
0
0
0
0
0
0
RG B[n] = 0
S: = S+ RG
RG [n] = 1
S:=S+[-RG A]
Sм: = RG В
11
10
12
13
14
15
17
18
19
20
16
Z: = S
9
8
6
7
5
4
3
2
1
Рис. 25. ГСА деления чисел в дополнительных кодах с фиксированной
запятой без восстановления остатка

97
Вершина 11. Анализируются знаковые разряды сумматора и RGА.
Если они совпадают, то переход на вершину 12, иначе – к вершине 13.
Вершина 12. N-му разряду RGB присваивается значение «1». Из
сумматора вычитается содержимое RGA.
Вершина 13. N-му разряду RGB присваивается значение «0». К
содержимому сумматора прибавляется значение RGA.
Вершина 14. Значения сумматора и RGB сдвигаются влево на 1
разряд. Значение счетчика уменьшается на «1».
Вершина 15. Анализируется содержимое счетчика на равенство «0».
Если СТ ≠ 0, то возвращаемся на вершину 11.
Вершина 16. Если СТ=0, то в сумматор записывается значение RGB.
В знаковые разряды сумматора поступает значение триггера знака.
Вершина 17. Если SignSm=1, то переход на вершину 18, иначе к
вершине 19.
Вершина 18. Ввод коррекции путем прибавления значения signSm*2
n
к содержимому сумматора.
Вершина 19. На шину Z выставляется содержимое сумматора.
3.8.4. Деление чисел в дополнительном коде с восстановлением
остатка
Алгоритм аналогичен делению в дополнительном коде без
восстановления остатка. Отличие состоит в том, что после проверки
возможности деления значение делимого восстанавливается (в Sм вновь
заносится Х) и только после этого сдвигается влево на один разряд.
В зависимости от знаков делимого и делителя к нему прибавляется
или от него вычитается делитель по тем же правилам. Далее
анализируются знаки остатка и делителя, по тем же правилам
определяются очередные цифры частного. Но в случае, когда signO
i+1
≠
-
signOi (или X) значение остатка O
восстановлено до Oi = O
+ [±У]
i+1
доп
Все остальные условия те же, что и при делении без восстановления
остатка.
Таким образом, если signO
i+1
восстановление остатка:
перед сдвигом влево должно быть
i+1
.
≠ signX (или signOi), то необходимо

98
S: = RG
: = n
S: = L1(S)
RG : = 0
S: = S+RG
sign S =
= sign RG
sign S =
= sign RG
sign S =
= sign RG B
sign S =
= sign RG B
S:=S+[-RG A]
S: = S+RG
S: = L1(S)
RG : = L1(RG )
: = - 1
S:=S+[-RG A]
RG [n] = 0
RG [n] = 1
0
0 0
111
1
O
i+1 +
; signO
i+1
O
i+1
+(-) ; signO
i+1
=sign
Часть ГСА операции деления чисел с фиксированной запятой с
восстановлением остатка отличающаяся от рис. 15 (вершины 8–14)
изображена на рис. 26.
Рис. 26. Часть ГСА деления чисел в дополнительных кодах с
восстановлением остатка

99
11 0101
10 1010
00 1101
11 0111
10 1110
00 1101
11 1011
11 0110
00 1101
00 0011
11 0011
11 0110
10 1100
00 1101
11 1001
11 0010
00 1101
11 1111
Z = X /
= - 0 1011
= 11 0101
= 0 1101
-
= 11 0011
:
2
-5
11 0 0 1 0 0
11 00100
1
Z
= 11 00101
S
L1(S)
y
S
L1(S)
L1(S)
L1(S)
S
S
S
[-y]
S
y
y
y
S
L1(S)
y
S
11 0101
00 1101
00 0010
()
}
}
Пример 17. Выполнить операцию деления чисел Z=X
восстановлением остатка (рис. 27).
доп
/ Y
доп
с
Рис. 27. Пример выполнения деления чисел X
с восстановлением остатка
доп
и У
по алгоритму
доп

100
= 0 1011
= 0 1011
= - 0 1101
y
= 1 0010
[-y]
= 0 1101
=
O
i+1
2 Oi +
, sign Oi ;
2 Oi+ [-]
, sign Oi= sign ;
Z
i+1
=
1, sign O
i+1
= sign ;
0, sign Oi .
{
{
3.8.5. Алгоритм деления чисел в обратном коде
Все изложенное для дополнительного кода справедливо и для
обратного кода. Необходимо только учитывать одну особенность: при
сдвиге остатка влево выполняется модифицированный сдвиг. Это значит,
что для отрицательного остатка в освободившийся разряд записывается
«1», а для положительного остатка – «0». Необходимость коррекции не
возникает.
Пример 18. Выполнить операцию деления чисел Z = X
обр
/ Y
восстановления остатка (рис. 28).
Содержательная ГСА деления в обратном коде Х/Y без
восстановления остатка в ЭВМ с фиксированной запятой (рис. 29).
обр
без
Пояснения к рис. 29.
Вершина 2. Здесь выполняется запись операндов А и В с шин Y и Х
соответственно в RGA и Sm. Значение сумматора считается равным нулю.
Вершина 3. В сумматор поступает содержание регистра RGB.
Вершина 4. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 10. Если RGA ≠ 0, то переходим к
вершине 5.
Вершина 5. Выполняется анализ равенства знаковых разрядов RGA
и RGB. Если знаки совпадают, то переход к вершине 7, если не совпадают,
то к вершине 6.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
