Как сложить два числа с помощью транзисторов
hard

Как сложить два числа с помощью транзисторов

Продолжение легендарной саги.

Что мы уже знаем о транзисторах:

  1. Это устройство, похожее на кран, только для электричества, и он либо пропускает сквозь себя ток, либо не пропускает.
  2. Если такие «краны» правильно соединить, то можно создать иллюзию полезной для человека работы — например, суммирования.
  3. На транзисторах основаны все современные компьютерные вычисления. Современные транзисторы очень маленькие — в буквальном смысле микроскопические. Они соединены сложным образом внутри всех наших процессоров, контроллеров и даже памяти.
  4. Транзисторы сами по себе ничего не понимают. Они просто перемешивают электричество. Но если их правильно соединить и их будет много, от этого перемешивания получится значительная польза, от автоматических и очень быстрых математических операций до современных компьютеров.

В этой статье разберём, как же именно соединены транзисторы, чтобы уметь так хорошо считать. Для этого нужно сначала понять транзисторную логику, после чего станет очевидно, как устроена транзисторная математика.

Нам потребуется вспомнить эту картинку, которая обозначает принцип действия транзистора:

Как сложить два числа с помощью транзисторов

Тут ток течёт слева направо. На транзистор подаётся управляющий ток, который этот транзистор «открывает», и ток течёт. Если управляющий ток выключить, то транзистор «закроется», движение тока остановится.

Транзисторная логика

У транзисторов есть три принципиальных способа соединения, которые соответствуют трём базовым логическим операциям. Если понимать эти способы и логику, вы поймёте архитектуру всего компьютерного мира. Запоминать и учить её не надо, достаточно просто увидеть.

Основных логических операций всего три: И, ИЛИ, НЕ. Все остальные получаются из их комбинаций, поэтому нам достаточно понять, как работают эти. Можно представить, что мы через транзисторы хотим включить лампочку в комнате и у нас есть выключатель на стене.

Операция «НЕ»

Самая простая операция: она меняет значение на противоположное. Так как в компьютерах и транзисторах на базовом уровне существуют только понятия «есть ток» и «нет тока», то тут будет очевидно, что противоположно чему:

НЕ (есть ток) = нет тока

НЕ (нет тока) = есть ток

Эту же запись можно представить так:

НЕ (1) = 0

НЕ (0) = 1

В терминах нашей комнаты с лампочкой это звучит так: «Если выключатель выключен, то лампочка должна гореть». Схема подключения такая:

Как сложить два числа с помощью транзисторов

Инженеры договорились обозначать такую схему вот такой фигурой. Она означает «Логическая операция НЕ»:

Как сложить два числа с помощью транзисторов

Операция «И»

Здесь уже участвуют два параметра, причём результат равен 1 только тогда, когда оба параметра — 1.

0 И 0 = 0

1 И 0 = 0

0 И 1 = 0

1 И 1 = 1

Только в последнем случае у нас получилась единица, потому что оба параметра — единицы. Как только хотя бы один из параметров — ноль, то всё выражение становится равно 0.

Это то же самое, как если бы у нас в комнате было два выключателя, а лампочка загоралась бы только тогда, когда включены оба.

Как сложить два числа с помощью транзисторов

На схемах такой логический элемент обозначается так, два входа и один выход:

Как сложить два числа с помощью транзисторов

Операция «ИЛИ»

Тоже работает с двумя параметрами, но по другим правилам: если хотя бы одна единица есть, результат тоже будет единицей.

0 ИЛИ 0 = 0

1 ИЛИ 0 = 1

0 ИЛИ 1 = 1

1 ИЛИ 1 = 1

Эта операция смотрит, есть ли хоть одна единица, одна или вторая, или вообще обе, и если находит её — сразу тоже становится единицей.

В терминах комнаты с лампочкой: чтобы лампочка загорелась, должен быть включён хотя бы один выключатель.

Как сложить два числа с помощью транзисторов

На схемах такой логический элемент обозначается так:

Как сложить два числа с помощью транзисторов

Вся логика и вычислительная мощь всех процессоров мира построена на этих трёх логических кубиках. Исключение — квантовые процессоры, но они устроены внутри совсем по-другому.

Что дальше

Комбинируя эти три логические схемы (там есть ещё четвёртая, она делается из трёх основных), мы сможем собрать такой каскад транзисторов, который поможет нам складывать числа. Забегая немного вперёд, вот каскад, который способен сложить два числа, если эти числа — единицы или ноли:

Как сложить два числа с помощью транзисторов

Этот каскад может сложить число размером 1 бит (единица или ноль). Его возможные результаты:

00 — ноль

01 — единица

10 — двойка в двоичном счислении

Если такой каскад «схлопнуть» до одной коробочки (и немного допилить), а потом соединить между собой несколько коробочек, можно складывать более сложные числа. Например, такой каскад сложит два числа до 4 бит, от 0 до 15:

Как сложить два числа с помощью транзисторов

Что мы узнали на этом этапе.

  1. Транзисторы можно соединять по-разному: по цепочке, параллельно, как-то ещё хитро.
  2. В зависимости от схемы соединения эта конструкция из транзисторов будет давать разные результаты. Например, лампочка будет гореть при выключенном выключателе. Или будет гореть, когда включён хотя бы один. Или когда включены оба.
  3. Эти схемы соединений помогают воспроизвести простые логические операции: НЕ, И, ИЛИ.
  4. Из этих логических операций можно собрать простейший сумматор единицы и ноля.
  5. Из простейшего сумматора можно каскадом собрать более сложный, например, для чисел от 0 до 15.
  6. А дальше просто наслаиваешь эти сумматоры друг на друга, соединяешь разными хитрыми образами, и у тебя получается всё более и более сложная вычислительная машина.

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Код и IDE (integrated development environment)
Код и IDE (integrated development environment)

Обзор инструментов крутых программистов.

medium
Андрюха, у нас логика! Возможно, криминал
Андрюха, у нас логика! Возможно, криминал

Логическая задача о преступности.

easy
Все опять заговорили про VPN. Что это такое, объясни мне!
Все опять заговорили про VPN. Что это такое, объясни мне!

Мы не можем вам сказать. Но можем показать.

medium
5 навыков, которые нужны программисту на базовом уровне
5 навыков, которые нужны программисту на базовом уровне

Помогут вырасти и в профессии, и в карьере

easy
Веб‑разработчик: рассказываем подробно о профессии
Веб‑разработчик: рассказываем подробно о профессии

Большой путеводитель для начинающих

easy
Как получить полезные знания из больших данных
Как получить полезные знания из больших данных

Введение в эконометрику + бесплатный курс про данные

hard
Кто такой сеньор и что он делает (он же senior)
Кто такой сеньор и что он делает (он же senior)

Программист, который умеет всё.

easy
Что такое Linux (и другие вопросы)
Что такое Linux (и другие вопросы)

Быстрое знакомство с самой многогранной операционной системой

medium
Зачем устанавливать Ubuntu
Зачем устанавливать Ubuntu

3 причины попробовать.

easy
hard