- •Глава 1
- •1.1. Понятие абстрактного автомата
- •1.2. Преобразование абстрактных автоматов
- •1.3. Соединение (композиция) автоматов
- •1.4. Тестирование абстрактных автоматов
- •2. Начальные языки описания абстрактных автоматов
- •2.1. Язык Граф-Схем Алгоритмов
- •2.2. Язык регулярных выражений
- •2.3. Формальные грамматики и языки
- •2.4. Автоматы и грамматики [ 7 ]
- •2.5. Машина тьюринга [ 5, 8 ]
- •3. Структурный синтез автоматов и кодирование информации
- •3. 3. ПредставЛение символьной информации
- •4.1 Машинное изображение чисел
- •4.2. Выполнение арифметических и логических операций
- •4.3. Микропрограммирование
- •5 Математический аппарат синтеза комбинационных автоматов
- •5.1 Элементная база построения комбинационных автоматов
- •5.2. Переключательные функции (логика высказываний)
- •7. Структурный синтез автоматов с памятью, асинхронные автоматы и сети петри
- •7.1. Канонический метод синтеза автоматов с памятью
- •7.3 Моделирование дискретных асинхронных процессов и сети Петри
- •Свойства сетей Петри
4.2. Выполнение арифметических и логических операций
Выполение арифметических операций в ЭВМ основано на двоичной арифметике, а именно на правилах
Сложения 0 + 0 = 0 и умножения 0 * 0 = 0
0 + 1 = 1 0 * 1 = 0
1 + 0 = 1 1 * 0 = 0
1 + 1 = 10 1 * 1 = 1
одноразрядных двоичных чисел. Необходимо отметить, что правило одноразрядного умножения можно описать с помощью логической операции конъюнкции, которая обозначается &:
0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
1 & 1 = 1.
Действия над многоразрядными двоичными числами могут выполняться по тем же правилам, что и для десятичной системы счисления. Например, сумма чисел Х = 1101b и V = 0111b вычисляется следующим образом:
Переносы-------------- 1 1 1 1
X 1 1 0 1
Y 0 1 1 1
---------------------
1 0 1 0 0 ,
т.е. при поразрядном суммировании надо иметь в виду, что перенос образуется в том случае, когда в данном разряде сумма цифр слагаемых и переноса > 10b, т.е. равна 10b или 11b.
Правила формирования переноса можно формализовать с помощью логической операции дизъюнкции определяется соотношениями
0 \/ 0 = 0
0 \/ 1 = 1
1 \/ 0 = 1
1 \/ 1 = 1
Сложение чисел с разными знаками в ЭВМ, как правило, основано на использовании обратного или дополнительного кодов.
Правило сложения чисел в ОК: суммирование обратных кодов [X1]OK и [X2]OK двух чисел X1 и X2 с циклическим переносом из знакового разряда даёт обратный код [X1 + X2]ОК суммы этих чисел X1 + X2. Для фиксации переполнения разрядной сетки используется два знаковых разряда.
Пример. X1 = - 0,01010. X2 = -0,10000. Тогда
[X1]OK = 11,10101, [X2]OK = 11.01111.
Складывая с учётом переноса из знакового разряда:
11.10101
+ 11.01111
-------------
111.00100
1
-------------
11.00101
Признаком переполнения является появление сочетания «10» или «01» в знаковых разрядах.
Сложение чисел с разными знаками в дополнительных кодах ещё проще: в этом случае перенос из знаковых разрядов просто отбрасывается.
Умножение и деление в ЭВМ осуществляется посредством операций сдвига и суммирования двоичных кодов. Операцию сдвига кода X вправо обозначим SHR, а влево – SHL. Тогда, если
X = x[n] x[n-1] … x[1] x[0], то
SHR(X) = 0 x[n] … x[2] x[1]
И SHL(X) = x[n-1] x[n-2] … x[0] 0.
Пример. Умножить Х1 = 0.10110 на Х2 = 0.10101.
Умножение осуществляется последовательно: умножением множимого Х1 на отдельные цифры множителя Х2, начиная, например, с младших разрядов, что даёт частичные произведения. Частичное произведение, умноженное на 1-й разряд, сдвигается влево 1 раз. Сумма сдвинутых частичных произведений даёт произведение Х1 на Х2.
0.10110
* 0.10101
-----------------
0.0000010110
частичные 0.000000000
произведения 0.00010110
0.0000000
0.010110
-------------------
0.0111001110
Деление двоичных кодов в ЭВМ также использует операции сдвига и суммирования кодов для выполнения деления необходимо использовать ОК или ДК, т.к. приходится суммировать коды с разными знаками.
Логические операции
К логическим операциям относятся сравнение машинных слов на равенство, выявление отношения «больше», «больше или равно», «меньше», «меньше или равно», поразрядные логические операции конъюнкции &, дизъюнкции \/.
Сравнение слов Х = х[n] x[n-1] … x[1] x[0] и
Y = y[n] y[n-1] … y[1] y[0] на равенство основано на вычислении эквивалентов разрядов
z[n] = x[n] < - > y[n],
z[n-1]= x[n-1]< ->y[n-1],
…,
z[1] = x[1] < - > y[1],
z[0] = y[0] < - > y[0],
после чего вычисляются конъюнкция z[n] &z[n-1]&…z[1]&z[0], значение которой «1» означает, что X = Y, а значение «0» – что Х не равно Y.
Вычисление отношения «больше» между кодами тоже можно свести к логическим операциям над отдельными разрядами.
Операции пересылки
Операции пересылки заключаются в том, что код из регистра или ячейки памяти А пересылается в регистр или ячейку памяти В, причём предыдущее содержимое В теряется. Операция пересылки, или присваивания, является одной из основных при построении алгоритмов преобразования информации.
Циклический или простой сдвиг можно рассматривать как частный специальный случай пересылки между разрядами регистра сдвига.
