Мы уже знаем, что компьютер внутри работает не с привычными для нас числами, а с битами — нулями и единицами. С их помощью он хранит информацию, принимает решения и передаёт сигналы. В прошлом модуле мы познакомились с логическими схемами: И (AND), ИЛИ (OR), НЕ (NOT) и другими. Это самые простые кирпичики, из которых можно строить что-то более сложное. Теперь пора использовать эти кирпичики для того, ради чего компьютеры и создавались — для вычислений.
Вычисления — это в первую очередь сложение. Потому что из сложения можно построить всё остальное: вычитание, умножение и даже деление. Именно поэтому наш путь к процессору начинается со сложения. Чтобы компьютер умел складывать, ему нужен сумматор. Но мы начнём с самой простой его разновидности — полусумматора.
Полусумматор — это простейшая логическая схема, которая умеет складывать два бита. Например, если мы складываем 0 и 0, результат будет 0. Если складываем 0 и 1, результат 1. Если складываем 1 и 0, результат тоже 1. Но если складываем 1 и 1, то в обычной десятичной системе мы получили бы 2. В двоичной же системе число 2 записывается как 10. Это значит, что в текущем разряде у нас будет 0, а в следующий разряд пойдёт перенос, то есть дополнительная единица.
Таким образом, у полусумматора два выхода. Первый выход называется «сумма», он показывает результат сложения в текущем разряде. Второй выход называется «перенос», он показывает, что нужно передать единицу в следующий разряд.
Работу полусумматора удобно описывать в таблице истинности. Если на вход подаются нули, то сумма и перенос тоже будут нули. Если на вход подаётся комбинация 0 и 1, то сумма будет равна 1, а переноса не будет. Если на входе 1 и 1, сумма в текущем разряде станет 0, но появится перенос.
Из этой таблицы видно, что сумма вычисляется с помощью логической операции XOR (исключающее ИЛИ), а перенос — с помощью операции AND (И). А их мы изучали ранее. Кстати XOR на схемах обозначается следующим образом:
Если нарисовать схему, то она будет очень простой. На вход идут два провода — A и B. Эти линии подаются на два элемента: XOR и AND. Из XOR выходит сигнал суммы, из AND — сигнал переноса.
Допустим, у нас есть два бита. Если A = 0, B = 1, то на выходе получится сумма = 1, перенос = 0. Если A = 1, B = 1, то сумма будет равна 0, а перенос — 1. Это и есть двоичное число 10. Напомним, что наличие или отсутствие бита, зависит от наличия или отсутствия напряжения на входах полусумматора. То есть если бы на выходах наше схемы были лампочки, то они бы загорались, если бы выход был 1 (есть напряжение), или не загорались, если выход 0 (нет напряжения). Давайте это проиллюстрируем.
Полусумматор так и назван, потому что он умеет складывать только два бита и не учитывает перенос из предыдущего разряда. Это его ограничение. А ведь если мы хотим складывать многобитные числа, например два байта, нам придётся учитывать переносы от одного разряда к другому. Для этого существует полный сумматор, с которым мы познакомимся в следующем уроке.
Зачем мы всё это разбираем, если наш модуль про процессор? Всё очень просто: полусумматор — это первый шаг к созданию арифметико-логического устройства, или АЛУ. АЛУ — это сердце процессора, именно оно выполняет все математические и логические операции. Сначала мы построим полный сумматор, затем многобитный сумматор, а из них — АЛУ. И вот тогда у нас появится первый настоящий блок будущего процессора.
Чтобы было ещё понятнее, представим обычные счёты или калькулятор. Когда мы складываем маленькие числа, например 0 и 1, всё просто: получаем 1. Но когда сумма даёт результат больше, чем один разряд может вместить, калькулятор переносит единицу в следующий разряд. Полусумматор делает ровно то же самое, только не деревянными косточками и не цифрами на экране, а электрическими сигналами.
Мы познакомились с первой настоящей вычислительной схемой, которая стоит в основе будущего процессора. Полусумматор складывает два бита, у него два выхода: сумма и перенос. Он реализуется с помощью двух логических элементов — XOR и AND. Это ещё не полноценное устройство для сложения больших чисел, но именно с него начинается история процессора. В следующем уроке мы разберём полный сумматор, который умеет учитывать перенос, и тем самым сделаем ещё один шаг вперёд в нашем конструкторе процессора.
Спасибо за внимание!
Если вам интересно копать глубже, разбирать реальные кейсы и получать знания, которых нет в открытом доступе — вам в IT Extra Premium.
Что внутри?
✅ Закрытые публикации: Детальные руководства, разборы сложных тем (например, архитектура высоконагруженных систем, глубокий анализ уязвимостей, оптимизация кода, полезные инструменты и объяснения сложных тем простым и понятным языком).
✅ Конкретные инструкции: Пошаговые мануалы, которые вы сможете применить на практике уже сегодня.
✅ Без рекламы и воды: Только суть, только концентрат полезной информации.
✅ Ранний доступ: Читайте новые материалы первыми.
Это — ваш личный доступ к экспертизе, упакованной в понятный формат. Не просто теория, а инструменты для роста.
👉 Переходите на Premium и начните читать то, о чем другие только догадываются.
👍 Ставьте лайки если хотите разбор других интересных тем.
👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!