Самые первые системы электрической связи - телеграф (1836) и телефон (1874) -
знакомят нас с главным действующим лицом всей электроники - с электрическим
сигналом. Точнее с двумя его разновидностями - аналоговым сигналом
(телефон) и цифровым (телеграф).
В телефоне, звук попадая в микрофон, создает в нем свою электрическую копию -
электрический ток, форма которого в точности повторяет все изменения звукового
сигнала. Это и есть аналоговый электрический сигнал (правильнее было бы
сказать аналогичный, то есть похожий), принимающий любые значения, непрерывно
и плавно меняющийся, который на другом конце телефонной линии вновь будет
превращен в звук.
Телеграф кодирует отдельные буквы, цифры и знаки с помощью комбинаций
электрических импульсов. Цифровое представление сигнала оказалось очень удобно,
действительно, есть сигнал - это "логическая единица", нет сигнала -
"логический ноль".
Передаваемый сигнал - это информация, но именно цифровое представление сигнала
позволило лучше понять что же такое информация. Оказалось, информацию можно
достаточно точно изменить, а единицей измерения количества информации
является бит, принимающий два логических значения: да или нет, истина или ложь,
включено или выключено, логическая единица или логический ноль.
В прошлом веке наибольшее развитие получила аналоговая схемотехника, но
современные электронные устройства все больше предпочитают цифровые сигналы.
Но работают с обоими типами сигналов. Нельзя сказать что один тип сигнала
лучше, а другой хуже, все зависит от решаемых задач. Один и тот же транзистор
может работать как в аналоговом режиме (см. урок 18
и урок 19), как усилитель аналогового сигнала и в
цифровом (ключевом) режиме, когда он может быть либо полностью открыт, либо
полностью закрыт.
В компьютерной технике (еще совсем недавно компьютеры называли ЭВМ,
электронно-вычислительные машины, а еще раньше ЭЦВМ, то есть цифровые ЭВМ).
оказалось удобнее работать с цифровым сигналом, хотя в прошлом веке аналоговые
вычислительные машины (АВМ) выпускались и применялись. Современные компьютеры
- цифровые, работают с двоичным сигналом, с нулями и единицами.
Но что же представляет из себя эти нули и единицы? Микроконтроллер,
применяемый в Arduino UNO питается от напряжения 5 вольт. Было бы удобно
считать наличие напряжения в 5 вольт - логической единицей, а отсутствие
напряжения, 0 вольт - логическим нулем. Но на практике получить ровно 5 вольт
или ровно 0 вольт довольно сложно, поэтому говорят об логических уровнях.
При работе с нашим контроллером уровнем логической единицы считается напряжение
в диапазоне от 2,4 до 5 вольт, а уровень логического нуля в диапазоне от
0 до 0,8 вольт.
В цифровой технике используется двоичная система сигналов, в которой имеются
всего две цифры - 0 и 1, из которых образуются любые числа. Например, число 9 из
десятичной системы счисления, которой мы пользуемся, соответствует число 1001 в
двоичной системе, которой пользуются компьютеры. Правила образования двоичных
чисел аналогично правилам образования десятичных чисел, и та и другая системы
счисления называются "позиционными", так как значение числа зависит от того,
какой разряд или какую "позицию" занимает цифра. Например, цифра 5 в числах
005, 050 и 500 обозначает разное число, все зависит от того в каком разряде она
находится. В десятичной системе счисления имеется десять цифр, от 0 до 9.
Каждая цифра соответствует числу от 0 до 9, а вот чтобы записать число десять,
потребуется уже две цифры, так как для записи числа десять нет специальной
цифры. Есть общее правило для всех позиционных систем, если переполняется
младший разряд (в данном случае единицы), то ставится 0 и переносится 1 в
старший разряд (в данном случае десятки), фактические запись числа 10
означает что есть одна десятка и нет единиц, двойка в числе 20 показывает, что
есть две десятки и так далее. После переполнения десяток - переходим к сотням,
затем к тысячам и так может продолжаться до бесконечности.
Аналогично поступаем и в двоичной системе, но здесь у всего две цифры и
основание здесь два. Число ноль мы запишем как 0, число один как 1, а вот с
числом два уже проблемы, в двоичной системе счисления нет цифры, для
обозначения числа два. Поэтому поступим также как в десятичной системе, обнулим
младший разряд, а в старшем запишем единицу, то есть число два в двоичной
системе запишется как 10, число три как 11, число четыре (здесь у нас опять
переполнение) как 100, число пять как 101 и так далее. Аналогично десятичным
числам, двоичные числа также можно складывать, умножать, вычитать и делить.
Правила выполнения арифметических операций в двоичной системе проще, например,
таблица умножения выглядит так:
0*0=0
0*1=0
1*0=0
1*1=1
А сложение в соответствии со следующим правилом:
0+0=0
0+1=1
1+0=1
1+1=0 и 1 переносится в следующий старший разряд (можно записать 1+1=10).
Вычитание, соответственно:
0-0=0
0-1=1 единица занимается из соседнего, старшего разряда, (можно записать 10-1=1)
1-0=1
1-1=0
Деление:
0/1=0
1/1=1
А вот на ноль делить нельзя, также как и в десятичной системе счисления.
Любое десятичное число, можно представить в виде суммы единиц, десятков, сотен
и так далее. Например, число 325 можно представить в виде:
Мы часто пользуемся логикой в повседневной жизни, даже не замечая этого.
Например, такая фраза, как "лампочка горит, если есть источник питания
и цепь замкнута" является логической фразой, т.е. в ней устанавливается
истинность или ложность сложного высказывания в зависимости от истинности
или ложности исходных предположений, которые называются посылками. В данной
фразе сложным высказыванием является "лампочка горит", потому что оно
зависит от исходных предположение "источник питания есть" и "цепь замкнута"
Здесь два исходных предположения связаны союзом "и", что означает, что для
того чтобы лампочка горела требуется соблюдение обоих условий, то есть и
выражение "источник питания есть" должно быть истинным и выражение
"цепь замкнута" должно быть истинным, и только в этом случае станет истинным
выражение "лампочка горит". Такое логическое выражение является "логическим
умножением" или "логическим И". Математически это можно записать так:
В современных компьютерах используется в основном двоичная логика (0,1), но
в истории были попытки, и вполне успешные, создание вычислительных машин,
использующих, например, троичную логику (+1,0,-1), или логику вида
ДА, НЕТ, НЕ ЗНАЮ. Многие математики считают, что несмотря на свою сложность,
по сравнению с двоичной логикой, у компьютеров с троичной логикой есть будущее.
Еще одним интересным направлением является нечеткая логика (fuzzy logic),
являющаяся обобщением классической логики и теории множеств, грубо говоря,
это логика, в которой значения могут принимать не только 1 или 0, но и
любое значение в интервале [0,1]. Нечёткая логика просто незаменима в тех
случаях, когда на поставленный вопрос нет чёткого ответа (да или нет; 0 или 1)
или наперёд неизвестны все возможные ситуации. Такие системы успешно применяются
в экспертных системах, нейронных сетях и системах искусственного интеллекта.
И наконец, "квантовая логика", логика применяемая в квантовом компьютере.
Там есть операции схожие с логическими операциями в классической логике,
например, операция "отрицание" переводит систему из одного состояния в другое.
Есть операции, которые по названию схожи с классическими, но работают
по-другому, так как оперируют совершенно другими данными. Например, есть
типичные операции, связанные с изменением состояния двух кубитов, так
называемые двух-кубитные гейты. Используются и операции, которых нет в
классическом компьютере - "условное отрицание", когда состояние одного кубита
меняется в зависимости от состояния другого.