Теперь давайте немного поговорим о том, как миллионы собранных вместе простейших кранов-транзисторов создают голосовых помощников, спецэффекты из «Звездных войн» и долги на вашей кредитке.
Все дело в том, что контакты множества транзисторов соединены так, что, когда на какие-то из входных контактов подаётся ток, транзисторы все вместе его «перемешивают» и отправляют на какие-то из других своих контактов – выходные. И всё это вместе производит впечатление вполне осмысленной операции.
Допустим, нам надо сложить числа 3 и 6. Надеюсь, всем очевидно, что результат будет 9. Простейшее устройство на транзисторах, которое сможет сложить числа, называется «сумматор». Обычно именно с таких схем начинают осваивать азы программирования, но мы сейчас не станем изучать начинку устройства, а посмотрим на результат его работы со стороны.
Смотрите, что здесь происходит: есть пять входов и четыре выхода. На входы подается электричество. Это просто движение электронов, которые не знают, что они обозначают числа. Но мы-то с вами понимаем, что в этом электричестве закодированы цифры.
Так же на выходе: электричество пришло на какие-то контакты, и засветилось несколько лампочек. Мы на них посмотрели и увидели, что эти горящие в таком порядке лампочки соответствуют какому-то числу. Делаем вывод, что это машина сложила два числа. Хотя на самом деле она просто перетасовала электрические потоки определенным образом. А способ перемешивания электричества определялся тем, как именно соединены между собой контакты транзисторов.
Давайте еще раз внимательно посмотрим на рисунок выше: вы видите, что почему-то вместо чисел 3, 6 и 9 там указаны только единицы и нули. Вот еще один важнейший момент: компьютеры для всех операций используют так называемый двоичный код (удерживаем внимание, самое сложное уже почти закончилось!). Мы помним, что у транзистора есть только два состояния: когда он открыт и пропускает ток и когда он закрыт и ток через него не идет. Одно из этих состояний обозначается единицей, а другое нулем.
Любые другие числа зашифровываются сочетанием этих двух цифр. Точно так же, как, например, в азбуке Морзе каждая буква кодируется сочетанием нескольких коротких и длинных сигналов. Один короткий и один длинный сигнал обозначают букву «А», а если подать один длинный и три коротких сигнала, то получится сочетание, кодирующее букву «Б».