Главная Операционные усилители



Двоичная арифметика

Правила двоичной арифметики очень просты и записываются в следующем виде для сложения:

0 + 0 = 0 1+0=1

0 + 1 = 1

1 + 1 = 1 плюс единица переноса в

следующий слева разряд.

(2.8)

{Здесь представлены все возможные комбинации.) Пример. Сложить два двоичных числа: 101 и 001.

+ 001 (2.9)

Пример. Сложить два двоичных числа: 010110 и 001011.

Переносы

о (2.10)

1 0000 1

Для выполнения операции вычитания приходится обманывать цифровые вычислительные машины и логические схемы. Дело в том, что эти схемы и даже самые всемогущие вычислительные машины умеют выполнять только одну арифметическую операцию - сложение. Чтобы выполнить вычитание, нужно обмануть схему так, чтобы она приняла вычитание за сложение. Для этого используют дополнительный двоичный код (имеется в виду дополнение двоичного числа до двух).

Дополнением двоичного числа до единицы служит его инверсия, т. е. дополнением нуля до единицы является единица, а дополнением единицы до нуля - нуль. Когда мы определяем обратный код для двоичного числа какой угодно длины, мы просто заменяем все нули на единицы, а все единицы на нули:

Цифра Дополнение

1- 1 (2.11)

Для получения дополнительного кода двоичного числа нужно определить его обратный код и затем прибавить единицу к младшему значащему разряду (МЗР) (2°). Сформируем, например, дополнительный код для числа 1011:



Число -> 10 11

Обратный код->- О 1 i i (2.12>

Прибавление 1 к МЗР-*- + 1

Дополнительный код ->- 0 10 1

Пример. Вычесть 0100 из 1011.

1 О 1 1

0 10 0 (2.13)

Сначала сформируйте дополнительный код для числа 0100, затем прибавьте полученное значение к 1001.

0 10 0

10 11

+1,

Дополнительный код 110 0

(2.14)

Прибавьте этот результат к числу 1011:

10 11

единица переноса -j-l 1 0 0 (2.15)

1 -i- 0 111 -ответ

Для проверки правильности ответа произведем такое же сложение в десятичной системе счисления. Сначала определим десятичные эквиваленты двоичных чисел 0100 и 1011, а затем выполним обычное сложение:

10 11 11,0

-0100-> 4 (2.16)

1 -<- 0 111 +7,0

Двоичный ответ равен 0111 плюс единица переноса. 011l2=7io, т. е. ответ правильный. Заметим, что появление единицы переноса говорит о том, что результат положительный. А теперь рассмотрим пример, где ответ должен быть отрицательным. Вычтем хотя бы из числа 0100 число 1011:

0 10 0

-10 11 (2.17)

Сначала проинвертируем число 1011, затем сложим с 1:



10 11

0 10 1

(2.18)

дополнительный код числа 1011.

Прибавим дополнительный код числа 1011 к числу 0100:

0 10 0

0101 (2.19)

1 О О l, = 9io

Но для десятичных чисел ответ будет другим:

(2.20)

Отметим, что в выражении (2.19) единицы переноса в ответе нет; это говорит о том, что результат отрицательный; итак, для того чтобы получить правильный ответ, проинвертируем результат и прибавим 1:

[результат из выражения (2.19)]

обратный код прибавление единицы

1 О О I2

О 1 \ Оа

+ 1 О 1 1 I2 О 1 1 12= -7

(2.21)

Знак минус приписан в связи с тем, что в выражении (2.19) Нет единицы переноса, а это значит, что результат имеет отрицательное значение.

Логические вентили

Почти все цифровые электронные логические схемы, даже в самых сложных вычислительных машинах, строятся на основе


Инвертор {вентиль НЕ)

Рис. 2.2. Условное обозначение инвертора, или вентиля НЕ (а); таблица истинности для инвертора (б).



0 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126


0.059