Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория цифровых автоматов. Учебное пособие
.pdf
101
0 1 0 1 1
1 0 0 1 0
1 1 1 0 1
1 1 0 1 1 .. Oi < 0
0 1 1 0 1
10 1 0 0 0
0 0101
0 1 0 1 0 .. O
i
> 0
1 0 0 1 0
1 1 1 0 0
1 1 0 0 1 .. Oi < 0
0 1 1 0 1
10 0 1 1 0
0 0 1 1 1
0 1 1 1 0 .. O
i
> 0
1 0 0 1 0
10 0 0 0 0
0 0 0 0 1
0 1 0 0 1
1 0 0 1 0 0
1 0 0 1 0 .. O
i
> 0
1 0 0 1 0
10 0 10 0
L1(S)
L1(S)
S
[-y]
y
S
S
y
S
S
S
S
L1(S)
L1(S)
L1(S)
y
y
[-y]
.sign O
i
sign
Z
= 1 00100
Вершина 6. Из содержимого сумматора Sm вычитается значение
RGА.
Вершина 7. К содержимому сумматора Sm прибавляется значение
RGА. Триггер знака устанавливается в «1».
Вершина 8. Анализ равенства знаковых разрядов Sm и RGB. Если
знаки совпадают, то переход к вершине 10, если не совпадают, то – к
вершине 9.
Рис. 28. Пример операции деления чисел Z=X
остатка
обр
/ Y
без восстановления
обр

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

103
Вершина 9. Значение сумматора сдвигается влево на 1 разряд.
Обнуляется значение RGB. Счетчик циклов устанавливается в «n».
Вершина 10. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).
Вершина 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.9. Выполнение арифметических операций над числами с
плавающей запятой
3.9.1. Представление двоичных чисел с плавающей запятой в ЭВМ
Представление чисел с плавающей запятой в нормальной
(полулогарифмической) форме используется в ЭВМ, предназначенных
-
для решения широкого круга задач. Вспомним, что в
полулогарифмической форме число A представляется в виде
A = mn
. qp
,
где mn – нормализованная мантисса числа A, определяющая значащие
цифры числа;
Р – порядок (характеристика) числа A;

104
q – основание системы счисления.
Мантисса m
представляет собой правильную дробь,
n
удовлетворяющую условию:
q-1 | m
n |
< 1.
Запятая при представлении мантиссы фиксируется перед старшим
значащим разрядом. Порядок Р указывает положение запятой в числе,
может быть положительным или отрицательным целым числом или
целым числом без знака (запятая при представлении порядка фиксируется
после младшего разряда). Порядок Р и мантисса mn представляются в
системе счисления с основанием q.
Выполнение арифметических операций в машинах с плавающей
запятой требует выполнения действий как над мантиссами, так и над
порядками. Числа А1 и А2 представлены следующим образом:
А1 = m
. qР1
1
; А2 = m
2
. qР2
.
Арифметическое сложение или вычитание мантисс двух чисел
может быть произведено только в случае равенства их порядков.
3.9.2. Алгоритм сложения двух чисел с плавающей запятой
Алгоритм сложения двух чисел с плавающей запятой.
1. Выравнивание порядков суммируемых чисел:
а) вычитание из порядка числа А1 порядка числа А
с целью
2
определения, порядок какого числа больше и на сколько:
P1 – P
2 =
P;
б) мантисса числа с меньшим порядком сдвигается вправо на
величину разности порядков P.
Если разность порядков положительная, то сдвигается мантисса
второго числа, если отрицательная, то сдвигается мантисса первого числа.
Обоим числам присваивается больший порядок.
2. Алгебраическое суммирование мантисс (аналогично сумми-
рованию дробных чисел с фиксированной запятой).
3. Результату присваивается больший порядок.

105
4. Проверка на нормализацию результата. При выполнении операции
сложения нарушение нормализации суммы может быть влево только на
один разряд (| m
ns |
1) или вправо на любое число разрядов (|m
| < q-1).
ns
3.9.3. Признаки нарушения и способы восстановления нормализации
мантиссы в ЭВМ с плавающей запятой
Как говорилось выше мантисса считается нормализованной, если
выполняется условие
q-1 ≤ |M
H
| < 1.
х
В нашем случае q = 2.
Положительная нормализованная мантисса в двоичном коде имеет
вид
M
хНпр.обр. доп.
= + 0,1 Х-2 Х-3 … Х-n = M
хНобр.
= M
хНдоп.
Отрицательная нормализованная мантисса:
H
M
= – 0,1 Х-2 Х-3 … Х-n;
х
M
M
M
хHдоп.
= 1,1 Х-2 Х-3 … Х-n;
хHпр.
хHобр.
= 1,0
= 1,0
-2
…
-2
-3
-3
…
-n
;
-n
+2-n.
Таким образом, признаком нормализованной мантиссы в
обратном и дополнительном кодах является различие цифр, стоящих по
обе стороны от запятой. В прямом коде – наличие единицы в старшем
значащем разряде.
Признак нарушения нормализации влево для дополнительных и
обратных кодов – это сочетание 01 или 10 в знаковых разрядах
модифицированных кодов. Устранение этого нарушения состоит в
модифицированном сдвиге мантиссы Мх вправо на 1 разряд и увеличении
порядка Рх на единицу.
Пример 19. Устранить нарушение нормализации влево мантисс Мх,
представленных обратными или дополнительными кодами:
1) Мх = 01,110111, Рх = 00,101.
После нормализации:

106
1
Мх = 00,111011 ①1 Рх = 00,110;
2) Мх = 10,10011, Рх = 00,011.
После нормализации:
Мх = 11,01001 ①2, Рх = 00,100.
Признак нарушения нормализации вправо для дополнительных и
обратных кодов является совпадение значения знакового разряда со
значением старшего значащего разряда мантиссы. Для устранения этого
нарушения мантисса сдвигается влево до тех пор, пока не будут
выполняться условия нормализации. Порядок Рх при этом уменьшается на
число выполненных сдвигов. В обратном коде в освобождающиеся
младшие разряды при сдвиге для положительного числа записываются
«0», а для отрицательного – «1». В дополнительном коде в
освобождающиеся разряды записываются «0» независимо от знака числа.
Пример 20. Устранить нарушение нормализации вправо
положительной мантиссы Мх (прямой, обратный или дополнительный
код).
= 00,001011; Рх = 00,101.
н
М
= 00,101100; Рх = 00,011.
х
Пример 21. Устранить нарушение нормализации вправо мантиссы
Мх в дополнительном коде.
М
M
= 11,1101011; Рх = 11,001.
х доп.
хHдоп.
= 11,0101100; Рх = 11,011.
Пример 22. Устранить нарушение нормализации вправо мантиссы
Мх в обратном коде.
и 2 – разряды, вышедшие за пределы разрядной сетки, могут быть использованы для округления или
отброшены.
М
M
= 11,1101010; Рх = 11,001.
х обр.
= 11,0101011; Рх = 11,011.
хHобр.

107
Соблюдение условий нормализации способствует более
экономичному использованию ресурсов ЭВМ, может служить средством
повышения точности выполнения арифметических операций, однако при
этом усложняется процесс их выполнений.
Пример 23. Выполнить операцию сложения чисел А1 и А2 с
плавающей запятой в формате m = 8 со знаком, k = 4 со знаком:
А1 :
А2 :
m1 пр
m2 пр
= 01111100, p1 = 0100.
= 11010100, p2 = 0011.
1. Выравниваем порядки суммируемых чисел
Р1 – Р2 = Р + 0100
1101
0001
пр
доп
пр
Р1 – Р2 = 1.
Сдвигаем мантиссу числа А2 вправо на один разряд:
m
2-1 = 10101010пр
2пр
Р
= (0100)2.
рез
2. Суммируем мантиссы чисел: m
1пр
+ m
2пр
.
При этом мантиссу числа А2 переведём в дополнительный код.
+ 01111100
11010110
m
= 01010010пр
рез
пр
доп
3. Анализ результата на нарушение нормализации влево показывает,
что сумма мантисс получена без нарушения нормализации влево, так как
было сформировано два переноса (перенос из старшего в знаковый разряд
и перенос из знакового разряда).
Нарушения нормализации вправо нет.
Сумма чисел А1 и А2 с плавающей запятой в формате m=8 со знаком,
k=4 со знаком равна: S = +0,1010010
Проверка: (15,5)
+ (–5,25)
10
. 2100
= (10,25)10.
10
= 1010,012=(10,25)10.
Пример 24 . Выполнить операцию вычитания чисел А1 и А2 с
плавающей запятой в формате m=8 со знаком, k=4 со знаком.
А1 :
m1 пр
А
2 : m2 пр
= 01111100, p1 = 0100.
= 11010100, p2 = 0011.

108
Операция вычитания отличается от сложения искусственным
изменением знака мантиссы вычитаемого на обратный.
А 1 – А
= А 1 + ( – А
м2
1. Выравниваем порядки чисел
Р1 – Р2 = Р + 0100
1101
0001
Р1 – Р2 = 1.
Сдвигаем мантиссу числа А
m
2-1 = 10101010пр.
2пр
Р
= (0100)2.
рез
2. Находим разность чисел:
m
= 10101010
2пр
m
= 00101010
2пр
01111100
+
00101010пр
пр
пр
пр
)
2
пр
доп
пр
вправо на один разряд:
2
– с изменённым знаком
10100110пр.
3. Имеет место нарушение нормализации влево, так как имеет место
только один перенос в знаковый разряд. Поэтому сдвинем мантиссу на 1
разряд вправо и увеличим порядок на 1:
m
=01010011
рез
А 1 - А
= (+0,1010011 * 2
2
пр Pрез
Проверка: (15,5)
– (–5,25)
10
= 0101
101
)
= (10100,11)2=(20,75)10.
2
= (20,75)10.
10
3.9.4. Особенности умножения двоичных чисел, представленных в
форме с плавающей запятой
Числа с плавающей запятой А1 и А2 представлены следующим
образом:
А1 = m1 ∙ qР1; А2 = m2 ∙ qР2.
Арифметическое умножение чисел с плавающей запятой сводится к
умножению мантисс и сложению порядков (как чисел с фиксированной
запятой):
А1 ∙ А2 = [m1 ∙ m2]; q
Р1+P2
.

109
Перед началом умножения мантиссы проверяются на равенство
нулю. Если одна из мантисс равна 0, то сразу формируется нулевой
результат.
Перемножение мантисс осуществляется чаще всего путём
перемножения их модулей.
При суммировании порядков может возникнуть переполнение. Факт
переполнения порядка устанавливается только после нормализации
мантиссы результата. При переполнении разрядной сетки порядка
результата исполнение программы прерывается.
Суммирование порядков осуществляется параллельно с умножением.
При умножении нормализованных мантисс нарушение нормализации
возможно только вправо на 1 разряд (минимальный результат
произведения получаем при перемножении модулей нормализованных
мантисс со знаком: 0,100 ∙ 0,100 = 0,010).
Нарушение нормализации влево при умножении произойти не
может, так как мантиссы по модулю меньше единицы:
0,11111 ∙ 0,11111 0,1111.
Произведению присваивается суммарный порядок сомножителей или
суммарный порядок сомножителей, уменьшенный на 1 в случае
нарушения нормализации вправо мантиссы произведения.
Пример 25. Выполнить операцию умножения чисел А1 и А2 с
плавающей запятой в формате m=8 со знаком, k=4 со знаком.
А1 :
А2 :
m1 пр
m2 пр
= 01111100, p1 = 0100.
= 11010100, p2 = 0011.
1. Проверка мантисс на равенство 0.
Перед началом умножения мантиссы проверяются на равенство
нулю. Если одна из мантисс равна 0, то сразу формируется нулевой
результат. Так как мантиссы чисел А1 и А2 не равны 0, то переходим к
следующему этапу.
2. Умножение мантисс.

110
Умножение мантисс производим методом умножения, начиная с
младших разрядов множителя, со сдвигом суммы частичных
произведений вправо при неподвижном множимом.
Перемножаем модули мантисс, а произведению присваивает знак
«плюс», если знаки сомножителей одинаковы, или знак «минус», если
знаки разные.
|m
|=01111100; |m
1пр
|=01010100. Перемножаемые числа дробные,
2пр
поэтому для представления результата умножения достаточно одинарной
разрядности.
01111100
*
01010100
00000000 – исходное значение суммы частичных произведений.
+ 01111100 – прибавление множимого, разряд множителя равен 1.
01111100 – сумма частичных произведений (
00111110 – сдвиг вправо на 1 разряд
00011101 – сдвиг вправо на 1 разряд
).
.
.
+ 01111100 – прибавление множимого, разряд множителя равен 1.
10011001 –
01001100 – сдвиг вправо на 1 разряд
00100110 – сдвиг вправо на 1 разряд
.
.
.
+ 01111100 – прибавление множимого, разряд множителя равен 1.
10100010 –
01010001 – сдвиг вправо на 1 разряд
m
Рез пр
=01010001, следовательно, нарушения нормализации нет.
.
.
3. Суммирование порядков.
0100
+ 0011
0111
Переполнения при суммировании порядков нет, так как не было
сформировано ни одного переноса: ни из старшего разряда в знаковый, ни
из знакового разряда.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
