Главная Операционные усилители Двоичная арифметика Правила двоичной арифметики очень просты и записываются в следующем виде для сложения: 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 |