10000000
–128
10000001
–127
10000010
–126
10000011
–125
…
…
11111101
–3
11111110
–2
11111111
–1
00000000
0
00000001
1
00000010
2
…
…
01111100
124
01111101
125
01111110
126
01111111
127
Теперь вы можете представить числа в диапазоне от –128 до +127. Старший значащий бит (крайний слева) называется знаковым разрядом. Знаковый разряд равен 1 для отрицательных чисел и 0 — для положительных.
Чтобы вычислить дополнение числа до двух, сначала вычислите его дополнение до единицы, а затем прибавьте 1. Это эквивалентно инвертированию всех цифр и прибавлению 1. Например, десятичное число 125 в двоичном формате выражается как 01111101. Чтобы выразить число –125 в виде дополнения до двух, сначала инвертируем цифры 01111101 для получения 10000010, а затем прибавим 1, в результате чего получим 10000011. Вы можете проверить результат по приведенной выше таблице. Для выполнения обратной операции повторите те же действия — инвертируйте все биты и прибавьте 1.
Эта система позволяет выражать положительные и отрицательные числа, не используя знак «–». Кроме того, с ее помощью можно складывать положительные и отрицательные числа, руководствуясь только правилами сложения. Например, сложим двоичные эквиваленты чисел –127 и 124. Это просто, если использовать в качестве шпаргалки предыдущую таблицу.
Результат эквивалентен числу –3 в десятичной системе счисления.
В данном случае нужно следить за условиями переполнения и исчезновения разряда. Такое может произойти, когда в результате сложения получается число больше 127 или меньше –128. Например, вы прибавляете 125 к 125.
Поскольку старший бит равен 1, результат следует интерпретировать в качестве отрицательного числа, которое соответствует –6 в десятичной системе счисления. Что-то подобное происходит и при сложении чисел –125 и –125.
С самого начала мы решили ограничиться 8-битными числами, поэтому необходимо проигнорировать крайнюю левую цифру. Правые восемь бит эквивалентны числу +6.
Вообще, результат сложения положительных и отрицательных чисел не является верным, если знаковые разряды двух операндов одинаковы, а знаковый разряд результата отличается.
Теперь у нас есть два разных способа использования двоичных чисел. Двоичное число может быть со знаком (знаковым) или без знака (беззнаковым). Восьмибитные числа без знака находятся в диапазоне от 0 до 255, 8-битные числа со знаком — в диапазоне от −128 до 127. По самим числам невозможно понять, сопровождаются они знаком или нет. Например, кто-то говорит: «У меня есть 8-битное двоичное число, значение которого равно 10110110. Каков его десятичный эквивалент?» Сначала вы должны спросить: «Это число со знаком или без знака? В зависимости от этого ответом может быть либо число –74, либо 182».
В этом и состоит проблема с битами: они всего лишь нули и единицы, которые ничего не говорят о себе.
Глава 14Обратная связь и триггеры
Известно, что электричество приводит предметы в движение. Оглядевшись по сторонам в обычном доме, можно увидеть электрические двигатели в различных устройствах, например в часах, вентиляторах, кухонных комбайнах, проигрывателях компакт-дисков. Электричество также заставляет вибрировать конусы в динамиках, благодаря чему стереосистемы и телевизоры воспроизводят звуки, речь и музыку. Однако самый простой и изящный пример того, как электричество приводит предметы в движение, вероятно, иллюстрируется классом устройств, которые быстро исчезают по мере их замены электронными аналогами. Я имею в виду уже ставшие раритетом электрические зуммеры и звонки.
Рассмотрим реле, соединенное с переключателем и батарейкой следующим образом.
Неудивительно, если эта схема кажется немного странной. Мы еще не встречались с таким способом подключения. Обычно реле подключается так, что вход отделен от выхода. Здесь все закольцовано. Замыкание переключателя делает цепь непрерывной.
Ток в замкнутой цепи заставляет электромагнит притягивать гибкую полоску.
Когда полоска меняет свое положение, цепь размыкается, поэтому электромагнит теряет свои магнитные свойства, а полоска возвращается на свое место.
А это, конечно же, снова замыкает схему. Происходит следующее: до тех пор, пока переключатель замкнут, металлическая полоска двигается назад и вперед, поочередно замыкая и размыкая цепь, что, скорее всего, сопровождается звуком. Устройство, издающее дребезжащий звук, называется зуммером. Если вы присоедините к нему молоточек и разместите рядом чашечку, появится электрический звонок.
Чтобы сделать зуммер, можно выбрать один из двух способов подключения этого реле. Вот еще одна схема подключения с общепринятыми символами для обозначения источника питания и земли.
Возможно, в этой схеме вы узнали инвертор, описанный в главе 11, поэтому ее можно изобразить проще.
Как вы помните, выход инвертора — 1, если вход — 0, и выход — 0, если вход — 1. Замыкание переключателя в этой цепи приводит к поочередному размыканию и замыканию реле в инверторе. Постоянную работу инвертора может обеспечить и схема без переключателя.
Может показаться, что эта иллюстрация противоречит логике, поскольку выход инвертора должен располагаться напротив входа, однако в данном случае выход является входом! Имейте в виду, что инвертор на самом деле просто реле, которому требуется немного времени для перехода из одного состояния в другое. Так что даже если вход равен выходу, вскоре выход станет противоположен входу (что, конечно, приведет к изменению входного сигнала и т. д.).
Чему равен выход этой цепи? Его значение быстро меняется между наличием и отсутствием напряжения. Можно сказать, значение выхода быстро чередуется между 0 и 1.
Такая цепь называется осциллятором. По сути она отличается от всех устройств, которые мы рассматривали ранее. Все виденные нами схемы изменяли свое состояние только при вмешательстве человека, который замыкал и размыкал переключатель. Однако осциллятор не нуждается в человеке, он работает сам по себе.
Разумеется, в отрыве от окружения осциллятор не очень полезен. Далее в этой и последующих главах мы увидим, что такая схема, подключенная к другим схемам, является важной частью автоматизации. Во всех компьютерах присутствует некий осциллятор, обеспечивающий синхронную работу остальных частей.
Значение выхода осциллятора чередуется между 0 и 1. Часто этот факт изображается с помощью диаграммы.
Эту диаграмму можно воспринимать как график, по горизонтальной оси которого отложено время, а по вертикальной — выходные значения 0 и 1.
Все это говорит о том, что с течением времени выходное значение осциллятора регулярно изменяется с 0 на 1. По этой причине осциллятор иногда называют часами, поскольку он позволяет определить время: достаточно подсчитывать количество колебаний.
Как быстро будет работать осциллятор? Насколько быстро будет вибрировать металлический контакт реле? Сколько раз в секунду? Очевидно, это зависит от конструкции реле. Легко представить большое, неуклюжее реле, которое медленно замыкает и размыкает контакт, и небольшое легкое реле с быстро вибрирующим контактом.
Цикл осциллятора — интервал, в течение которого его выход изменяется, после чего возвращается к исходному значению.
Время, которое занимает один цикл, называется периодом осциллятора. Предположим, период нашего осциллятора равен 0,05 секунды. Вдоль горизонтальной оси мы можем отложить время в секундах начиная с некоторого произвольно выбранного нулевого момента.
Частота осциллятора равна единице, поделенной на период. В данном примере, если период осциллятора составляет 0,05 секунды, его частота 1 / 0,05 = 20 колебаний в секунду. Выход осциллятора изменяется и возвращается к исходному значению 20 раз в секунду.
Количество колебаний в секунду — такой же логичный термин, как количество километров в час, килограммов на квадратный метр или калорий на порцию, однако он больше не используется. В память о Генрихе Рудольфе Герце (1857–1894), который первым передал и принял радиоволны, говорят «герц». Сначала это слово начали применять в Германии в 1920-х годах, а затем за несколько десятилетий термин прижился и в других странах.
Таким образом, можно сказать, что наш осциллятор имеет частоту 20 герц, или 20 Гц (сокращенно).
Конечно, мы произвольно указали частоту одного конкретного осциллятора. В конце этой главы мы сможем соорудить то, что позволит фактически измерить данный параметр.
Чтобы начать работу над этим устройством, давайте рассмотрим пару вентилей ИЛИ-НЕ, соединенных определенным образом. Вероятно, вы помните, что на выходе вентиля ИЛИ-НЕ есть напряжение, только если напряжения нет ни на одном из его входов.
Вот схема с двумя вентилями ИЛИ-НЕ, двумя переключателями и лампочкой.
Обратите внимание на необычную схему проводки: выход левого вентиля ИЛИ-НЕ — это вход правого вентиля ИЛИ-НЕ, а выход правого вентиля ИЛИ-НЕ — вход левого вентиля ИЛИ-НЕ. Такое соединение называется обратной связью. Действительно, как и в случае с осциллятором, выход становится входом. Эта особенность будет характерна для большинства схем, приведенных в данной главе.
Сначала ток в этой цепи будет течь только от выхода левого вентиля ИЛИ-НЕ. Это связано с тем, что оба входа данного вентиля равны 0. Теперь замкните верхний переключатель. Выход левого вентиля ИЛИ-НЕ становится равным 0, а это значит, что выход правого вентиля ИЛИ-НЕ равен 1, и лампочка загорается.
Волшебство наблюдается, когда вы размыкаете верхний переключатель. Поскольку выход вентиля ИЛИ-НЕ — 0, если один из входов — 1, выход левого вентиля ИЛИ-НЕ не изменяется, и лампочка не гаснет.