Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
automats.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
5.12 Mб
Скачать

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.

Вычисление отношения «больше» между кодами тоже можно свести к логическим операциям над отдельными разрядами.

Операции пересылки

Операции пересылки заключаются в том, что код из регистра или ячейки памяти А пересылается в регистр или ячейку памяти В, причём предыдущее содержимое В теряется. Операция пересылки, или присваивания, является одной из основных при построении алгоритмов преобразования информации.

Циклический или простой сдвиг можно рассматривать как частный специальный случай пересылки между разрядами регистра сдвига.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]