Код. Тайный язык информатики — страница 23 из 71

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, выход левого вентиля ИЛИ-НЕ не изменяется, и лампочка не гаснет.