Логические уровни, или Как можно передать информацию
Первый курс. Вопрос на экзамене:
— Сколько байт в килобайте?
— Тысяча!!!
Пятый курс:
— Сколько метров в километре?
— 1024!!!
Студенческий анекдот
Любое событие в окружающем нас мире содержит информацию. Электрические сигналы — это один из самых удобных способов ее представления и передачи.
В предыдущей главе мы имели дело с аналоговыми сигналами и совершенно четко представляем себе, что это такое, как их получить, как усилить и для чего использовать. Цифровой сигнал — особый вид электрического сигнала, который нет необходимости характеризовать конкретным значением напряжения или тока… Важен только сам факт наличия или отсутствия его, причем заранее договоримся, что присутствие сигнала будет соответствовать цифре логической 1, а его отсутствие — логический 0. Но давайте не будем забегать вперед, а научимся получать цифровые сигналы.
Обратим внимание на рис. 14.2.

Рис. 14.2. Простейший способ получения цифрового сигнала
Нам понадобится источник питания G с напряжением UG, переключатель SA1 и вольтметр PV1, с помощью которого мы будем регистрировать наличие сигнала. Величина напряжения, создаваемого источником G, в данном случае совершенно не важна. Собрав простейшую схему, установим вначале переключатель SA1 в положение «1». Очевидно, что вольтметр PV1 покажет напряжение UG. Назовем это состояние высоким уровнем цифрового сигнала. Теперь, в момент времени t1, переведем переключатель в положение «2». Прибор покажет перепад напряжения к нулю и затем нулевое напряжение. Это состояние назовем низким уровнем цифрового сигнала. Вновь, в момент времени t2, переведем ключ в положение «1». Прибор покажет перепад напряжения к высокому уровню и затем — напряжение высокого уровня. Дальше, коммутируя переключатель SA1 из одного положения в другое, получим серию прямоугольных импульсов. Вот, пожалуй, и все компоненты цифрового сигнала. Назовем их еще раз:
• высокий-уровень сигнала (лог. 1, или иногда обозначают латинской буквой Н — high);
• низкий уровень сигнала (лог. 0, или L — low);
• перепад из высокого уровня сигнала в низкий;
• перепад из низкого уровня сигнала в высокий;
• прямоугольный импульс сигнала.
Не правда ли, набор более чем скудный. Но даже такие сложнейшие цифровые устройства, как персональные компьютеры, как-то умудряются обходиться такими скромными средствами и при этом выполнять сложнейшие математические расчеты. Как работать с этими нехитрыми «инструментами»? Пора договориться о некоторых правилах и в дальнейшем придерживаться их неукоснительно. Вначале разберемся с высоким и низким уровнями сигнала, называемыми статическими состояниями цифрового сигнала.
Еще в первом классе школы, а может и раньше, вы научились складывать, вычитать, делить, умножать числа, представленные в десятичной системе счисления, в которой возможно пользоваться числами от 0 до 10. Естественно, с тех пор вы не представляете иной возможности для математических расчетов. Но, оказывается, существуют и другие системы счисления. Цифровая техника обходится двоичной системой, в которой нет иных знаков, кроме 0 и 1. «Нолик» представляется низким уровнем сигнала, а «единичка» — высоким. Числа, представленные в двоичной системе, то есть набором нулей и единиц, тоже можно по определенным правилам складывать, вычитать, делить, умножать, извлекать из них корни, менять знак и использовать многое другое из арсенала математики. В обыденной жизни мы привыкли к десятичным числам, но цифровая техника ими пользоваться не может, поэтому необходимо вначале перевести число из десятичной системы в двоичную, потом цифровой прибор автоматически совершит необходимые операции и затем выполнит обратное преобразование результата — из двоичной формы в десятичную, удобную для восприятия человеком.
Чтобы понять принцип работы цифровых устройств, вначале нужно научиться переводить числа из одной системы счисления в другую. Чем мы сейчас и займемся.
Помните, как устроено любое десятичное число? К примеру, 10248? Вот так:
10248 = 1·10000 + 0·1000 + 2·100 + 4·10 + 8·1.
Это число имеет пять разрядов, значение каждого из которых умножается на вес разряда, а в сумме число имеет знакомую всем форму. Вес разряда — это числа 10000, 1000, 100 и так далее. «Вес» характеризует вклад того или иного разряда числа в его суммарное значение.
Существует строгая математическая формула, которая переводит число из любой системы счисления в десятичную:
Z = Ai-1·Ni-1 + Ai-2·Ni-2 + ... + A1·N1 + A0·N0,
где Z — число, представленное в десятичной системе счисления;
i — число разрядов числа, представленного в любой системе счисления;
А — коэффициент при весе разряда;
N — основание системы счисления.
Основание системы счисления, возводимое в степень согласно приведенной формуле, и дает вес разряда. Что такое основание системы счисления? Для десятичной системы N = 10, для двоичной N = 2.
Представим число 10248 в двоичной системе. Мы получим следующую запись:
1024810 =101000000010002.
Нижний индекс — «10» и «2», как вы уже наверняка догадались, обозначает основание системы счисления. Проверим, что мы не ошиблись:
10248 = 1·8192 + 0·4096 + 1·2048 + 0·1024 + 0·512 + 0·256 + 0·128 + 0·64 + 0·32 + 0·16 + 1·8 + 0·4 + 0·2 + 0·1.
Убедились? Сделаем очень важный для нас вывод: представленное число в десятичной системе записывается с помощью пяти разрядов, а в двоичной системе оно имеет уже 14 разрядов. Увеличение разрядности, или, как говорят специалисты, разрядной сетки, является платой за уменьшение основания системы счисления. Поэтому запомните: разрядная сетка определяет возможности тех или иных цифровых приборов в части оперирования числами. Максимальное число, которое можно представить в жестко заданной разрядной сетке, определяется так:
Zmax = Ni - 1
Например, максимальное число (Zmax) в десятичной системе счисления с четырехразрядной сеткой (i = 4) — это 9999, а в двоичной системе с той же сеткой — только 15.
Преобразовав десятичное число в набор нулей и единиц, его можно передать по линии связи, сохранить, подвергнуть математическим операциям. Все это проделает электронная схема, построенная по определенным правилам, о которых мы поговорим позже.
Теперь вы знаете, как преобразовать двоичные числа в десятичные, но мы должны овладеть и обратной процедурой — превращением десятичного числа в двоичное. Если в описанной выше процедуре используются операции умножения и последующего сложения, то здесь все построено на делении и последующем вычитании.
Рассмотрим преобразование нашего числа 10248 в двоичное. Схема, отражающая эту процедуру, показана на рис. 14.3.
Рис. 14.3. Пояснение процесса преобразования десятичного числа в двоичное
Вначале число делим на 2, получая частное 5124 и остаток от деления 0, который становится значением разряда с весом 1. Последовательно совершая операции деления, записываем остатки во все разряды.
Разрядная сетка с определенными количествами разрядов в двоичной системе счисления имеет свои названия, которые необходимо запомнить. Одиночная разрядная сетка (один разряд — самая малая единица измерения информации) имеет название — бит. Бит (bit) — происходит от сокращения английского названия binary digit (двоичная цифра). Четыре бита составляют тетраду. Две тетрады — байт, два байта — слово, два слова — двойное слово. Наиболее часто в цифровой технике встречаются байты (8 бит) и слова (16 бит). Еще в цифровой технике вы встретитесь с такими устоявшимися понятиями, как килобит, килобайт, мегабайт. Читатель вполне резонно может предположить, что килобайт — это тысяча байт, а мегабайт — тысяча килобайт. И будет совершенно прав! Но есть также и Кбайт — это 210 байт, то есть 1024 байта. Соответственно Мбайт — 1024 Кбайт, или 1048576 байт. Путаница, однако…
Почему так вышло, что привычные приставки, использующиеся в десятичной системе счисления, в двоичной приобрели несколько иной смысл?
Дело в том, что на заре развития цифровой техники для обозначения 210 байт был выбрана буква «К» — Кбайт, и чуть позже к ней добавили десятичное «кило», хотя, добавляя эту приставку, никто не обращал внимания на двусмысленность ситуации. Затем появились приставки М, Г… Впрочем, если бы ситуация ограничилась только этой несуразицей, ничего страшного бы не произошло. Но в ходу появились и настоящие «килобайты», «мегабайты» и «гигабайты», в которых, например, приставка «кило» обозначает ровно 1000 байт. Кто стал использовать эту чисто «десятичную» терминологию? Производители и продавцы компьютерных комплектующих — в рекламных целях. Например, покупатель приобрел для компьютера жесткий диск размером 50 Гб — в «десятичных» единицах измерения. Реально — в двоичных — его объем составит 46,5 ГБ. Из-за путаницы в терминологии «обвес» составит 3,5 двоичного ГБ — порядочную цифру, близкую к 10 %. С точки зрения рекламиста, цифра 50 смотрится гораздо весомее, чем 46,5. Субъективно эти 46,5 тяготеют более к 40, нежели чем к 50.
Чтобы навести порядок с терминологией, Международная электротехническая комиссия (МЭК) в марте 1999 г. предложила для двоичных производных величин новые названия — кибибайт, мебибайт, гибибайт, оставив за десятичными производными приставки «кило», «мега», «гига». Приставка би- происходит от слова «бинарный» — «двоичный». В ноябре 2000 года эти предложения были официально закреплены в Международном стандарте 1ЕС 60027-2 (2000-II), касающемся наименований и обозначений физических величин…
Но это нововведение приживается плохо — исключительно из-за неблагозвучности и трудности произношения новых величин. Как будут развиваться события дальше, покажет время. В табл. 14.1 мы приводим всю необходимую терминологию.
Поговорим теперь о шестнадцатиричной системе счисления, которая тоже довольно часто используется в цифровой технике. Основание этой системы — 16, а в качестве символов используются цифры от 0 до 9 и буквы А, В, С, D, Е, F (буквами указываются числа 10, 11, 12, 13, 14, 15 соответственно). Эта система удобна для наглядного представления больших объемов двоичных чисел.
Интересные свойства шестнадцатиричных чисел связаны с тем, что тетрадой бит можно задать эти самые 16 чисел. Поэтому даже слово, в двоичном виде записывающееся в виде цепочки из 16 бит, в шестнадцатиричной системе предстает в виде 4-х знаков. В табл. 14.2 показано соответствие трех систем счисления, встречающихся в цифровой технике.
Мы уже говорили о том, как различать числа с разными основаниями. Запомните также, что числа 1010, 102 и 1016 не равны друг другу! Преобразовывать шестнадцатиричные числа в десятичные тоже очень просто — достаточно вычислить «вес» разрядов и просуммировать по всем разрядам полученные произведения.
Основное преимущество шестнадцатиричной системы заключается в том, что для представления чисел и операций с ними требуется меньшее количество позиций значащих цифр, однако эта система более удобна для работы с двоичной арифметикой, чем десятичная. Показать все преимущества работы с шестнадцатиричным представлением чисел простым рассказом о достоинствах и недостатках довольно сложно. Когда читатель столкнется с двоичной арифметикой в практических конструкциях, он на собственном опыте все поймет. Пока же рекомендуем просто запомнить о такой возможности.
А теперь пусть читатель задаст себе вопрос: умеет ли он складывать и вычитать десятичные числа «в столбик»? Ну конечно же умеет — эти знания приобретены в начальной школе! Но как работать с двоичными числами при необходимости сложить их или вычесть одно из другого? Точно так же, по тем же правилам, приведенным на рис. 14.4 для операций сложения и вычитания.
Рис. 14.4. Арифметические операции с двоичными числами
Действия по подпунктам (а), (б) и (в) на обоих рисунках понятны и дополнительных комментариев не требуют. А вот действие (г) имеет особенности. В случае сложения происходит перенос единицы в следующий по старшинству разряд, а в случае вычитания — заем из старшего разряда.
На рис. 14.5 приведены примеры сложения и вычитания двух 8-разрядных чисел. Сложность понимания обычно возникает при выполнении вычитания, поэтому поясним рис. 14.5, б.
Рис. 14.5. Пример действия арифметических операций над двумя 8-разрядными числами:
а — сложения; б — вычитания
Разряды с весами 1, 2 и 4 просты для выполнения вычитания. Но в колонке с весом разряда 8 осуществляется вычитание 1 из 0. «Единичка» занимается из разряда с весом 16, и разность дает значение 1. После заема в разряде с весом 16 придется вычесть 1 из 0, поэтому за новым заемом отправляемся в разряд с весом 32. Увы — в том разряде стоит 0, поэтому занимаем из разряда с весом 64. В колонке с весом 32 имеем 1–1 = 0. И так далее.
Вас не слишком утомила двоичная арифметика? Мы рассказываем лишь о ее основах, о том, что необходимо узнать в первую очередь. В дальнейшем, уже за рамками этой книги, если читатель заинтересуется цифровой техникой всерьез, ему предстоит разобраться в операциях двоичного умножения и деления, изучить арифметику с плавающей запятой, научиться работе с числами со знаком, освоить буквенно-цифровые коды и еще многое другое не менее интересное. А пока познакомимся с простейшими «кирпичиками» цифровой техники, из которых, как из детского конструктора, потом можно будет собирать полезные схемы.