- •Вопрос 1. Предмет та.
- •Вопрос 2. Классификация автоматов
- •Вопрос 3. Приложения та
- •Вопрос 4. Двоичное умножение
- •Вопрос 5. Умножение в инверсных кодах
- •Вопрос 6. Деление
- •Вопрос 7. Деление в инверсных кодах. Особенности.
- •Вопрос 8. Особенности выполнения операций в формате с плавающей запятой.
- •Вопрос 9
- •Вопрос 10. Модель дискретного преобразователя Глушкова
- •Вопрос 11. Микропрограммирование
- •Вопрос 12. Структуры операционных автоматов
- •Вопрос 13. Синтез оа процедурного типа
- •Вопрос 14. Синтез оа структурного типа
- •Вопрос 15. Автоматные языки. Формальное задание Автомата.
- •Вопрос 16. Модели автоматов Мили и Мура
- •Вопрос 17. Эквивалентность ка. Теорема Мура.
- •Вопрос 18. Минимизация конечных автоматов.
- •Вопрос 19. Эквивалентность автомата Мили и Мура.
- •Вопрос 20. Виды уа
- •Вопрос 21. Структурные схемы уа. Мили и Мура.
- •Вопрос 22. Этапы синтеза уажл.
- •Вопрос 23. Примеры синтеза уажл.
- •Вопрос 24. Гонки и способы борьбы с ними
- •Вопрос 25. Уа с программируемой логикой (уапл)
- •Вопрос 26. Алгебраическая и структурная теория ка.
- •Вопрос 26 [part2]
- •Вопрос 27. Объединение нескольких уа в один
- •Вопрос 28. Программная реализация ка. Варианты реализации. Шаблон Состояние.
- •Вопрос 29. Назначение и краткая характеристика vhdl.
- •Вопрос 30. Реализация уа на vhdl.
- •Вопрос 31. Понятие о языке моделирования uml.
- •Вопрос 32. Понятие о языках и формальных грамматиках
- •Вопрос 33. Классификация языков
- •Регулярные языки и Конечные Автоматы
- •Вопрос 34. Лемма о накачке
- •Вопрос 35. Понятие о нка. Получение дка по нка.
- •Вопрос 36. Регулярные выражения. Синтаксические диаграммы. Теорема Клини.
- •Вопрос 37. Применение рв. Различные нотации рв.
- •Вопрос 38. Кс-грамматики и магазинные автоматы.
- •Вопрос 39. Машины Тьюринга
- •Вопрос 40. Использование мт для анализа алгоритмов.
Вопрос 4. Двоичное умножение
Поскольку построение цифровых автоматов будет рассматриваться на примере реализации алгоритмов машинной арифметики, имеет смысл рассмотреть основные подобнее алгоритмы.
1. Умножение двоичных чисел – это циклическая операция (если используется косвенный алгоритм умножения). Количество шагов зависит от разрядности множителя. На каждом шаге выполняется сдвиг операндов и возможное сложение.
A – множимое
В – множитель
С – сумма частичных произведений
Р(С) – произведение
Данный алгоритм соответствует известному алгоритму «умножение в столбик»
A = 5
В = 6
А2 = 0101 В2 = 0110

В зависимости от направления сдвига и направления анализа разряда множителя, различают 4 схемы косвенного умножения
1) умножение с младших разрядов со сдвигом вправо СЧП
2) умножение со старших разрядов со сдвигом влево СЧП
3) умножение с младших разрядов со сдвигом влево СЧП
4) умножение со старших разрядов со сдвигом вправо СЧП
Каждый из вариантов соответствует определённому варианту раскрытия скобок в произведении
![]()
- 1-ая схема умножения

Вопрос 5. Умножение в инверсных кодах
При умножении
чисел в инверсных кодах, появляются
интересные особенности (при умножении
в прямых кодах, не отличается от примера,
только дополнительно вычисляется знак
):
все операции сложения и сдвига выполняются по правила соответствующего инверсного кода
Сложение в обратном коде происходит с циклическим переносом.
Сдвиг вправо происходит с размножением знака.
Сдвиг влево в ОК происходит циклически.
При умножении на отрицательный множитель в инверсном коде, необходимо выполнить коррекцию произведения (после завершения основного цикла).
Коррекция в дополнительном коде: P=P’-A
Коррекция в ОК: P=P’-A+A*2-n
Коррекций №1: С=А (перед циклом)
Коррекций №2: P=P’-A (после цикла)
Все операции с инверсным кодом лучше выполнять в модифицированном коде, т.е. с двумя знаковыми разрядами. 11. – «+», 00. – «-»
Пример: (-5)x(-6)
Апк=11.0101
Адк=11.1011
Впк=11.0110
Вдк=11.1010
-Адк=00.1011
|
Регистр С |
Регистр В |
В(0) |
Комментарий |
|
00.0000 |
11101 |
0 |
CNT=4,
CNT B(0)=0 => C-> и B-> |
|
00.0000 + 11.1011 |
01110 |
1 |
CNT=3,
CNT B(0)=1 => C=C+A |
|
11.1011 |
01110 |
1 |
C-> и B-> |
|
11.1101 |
10111 |
0 |
CNT=2,
CNT B(0)=0 => C-> и B-> |
|
11.1110 + 11.1011 |
11011 |
1 |
CNT=1,
CNT B(0)=1 => C=C+A |
|
11.1001 |
11011 |
1 |
C-> и B-> |
|
11.1100 |
11101 |
1 |
CNT=0 – конец |
В(0)=1 => B<0 => коррекция C:=C+[-A]

P=00.00011110
Вопрос 6. Деление
Деление двоичных чисел – циклическая операция, но в отличие от умножения, деление может выполняться бесконечно. На практике деление останавливается при определении требуемого разряда частного (n+1 разряда частного, затем округляется).
В цикле деления выполняется сдвиг текущего остатка влево и вычитание делителя.
Выделяют два основных алгаритма деления:
а) с восстановлением остатка.
б) без восстановления остатка.
С восстановлением остатка:
1) выполняется пробное вычитание делимого из делителя
Делимое – А, делитель – В, R – остаток, Ri – текущий остаток, Ri+1 – следующий остаток, С – частное.
Если R>0, то деление останавливается (рассматривается деление правильных дробей).
Если R<0, то выполняется восстановление (R+B)
2) удвоение остатка
3) вычитание делителя из остатка
Если Ri+1>0, то очередная цифра частного равна 1, иначе – равна 0. в последнем случае выполняется восстановление остатка.
4) действия 2) и 3) выполняются n раз и результат округляется до n разрядов
При восстановлении остатка, очередной остаток вычисляется так:
Ri+1=2(Ri+B) - B=2Ri+B
В алгоритме без восстановления остатка в случае, когда очередная цифра частного равна 0, восстановление не производят, зато на следующем шаге не вычитают, а прибавляют делитель к R.
