Читайте также:
|
|
Выполение арифметических операций в ЭВМ основано на двоичной арифметике, а именно на правилах
Сложения 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
-------------
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
Деление двоичных кодов в ЭВМ также использует операции сдвига и суммирования кодов для выполнения деления необходимо использовать ОК или ДК, т.к. приходится суммировать коды с разными знаками.
Дата добавления: 2015-10-23; просмотров: 154 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Машинное изображение чисел | | | Микропрограммирование |