История: как машины научились складывать

Перенос — самое трудное

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

было 19сотнидесяткиединицына счётах = 19+1стало 20на счётах = 20десятая костяшка единиц не помещается: все десять — назад, одну — в десятки
Русские счёты: разряд — проволока с десятью костяшками, отсчитанные сдвинуты влево (две тёмные в середине помогают считать глазом). Прибавить 1 к 19 — значит сделать перенос руками: сбросить единицы и добавить костяшку в десятки.

Блез Паскаль в 1642 году построил для своего отца-сборщика налогов счётную машину, в которой перенос делался сам: колесо, переходя с 9 на 0, подталкивало соседнее. Через тридцать лет Готфрид Лейбниц придумал ступенчатый валик, и на его идее век спустя выросли арифмометры — счётные машины в каждой конторе вплоть до 1970-х.

01234567890123456789012345678901234567890123456789рычаги: набрать число 207ручка: оборот —прибавить00000414результат02счётчик оборотов207 × 2 = 414: два оборота ручкисдвиг
Арифмометр: рычагами набирают число, один оборот ручки прибавляет его к окошкам результата — с переносом между разрядами внутри. Два оборота — умножение на 2. Сдвиг каретки на разряд — умножение на 10: так умножали столбиком.

Лейбниц же описал и двоичную систему: всего две цифры, 0 и 1. Для колёс она была неудобна. Зато идеально подошла для того, что умеет быть только включённым или выключенным.

Реле на кухонном столе

В 1937 году инженер Bell Labs Джордж Стибиц собрал дома, на кухонном столе, двоичный сумматор из двух телефонных реле, батарейки и лампочек. Лампа горела — 1, не горела — 0. Ровно то, что вы соберёте в первом уроке. Позже его «модель K» (от kitchen — кухня) выросла в релейный калькулятор, который в 1940 году считал по телефонной линии из другого города.

В те же годы в Берлине Конрад Цузе строил двоичные вычислительные машины: механическую Z1 и релейную Z3 (1941) — первый работающий программируемый компьютер. Сумматор в ней тоже был сердцем всего.

Сумматор в каждом процессоре

Реле сменили лампы, лампы — транзисторы, транзисторы ужались в микросхемы. А сумматор остался: любой процессор вычитает, сравнивает и считает адреса тем же сумматором. Отрицательные числа почти все машины с 1960-х записывают в дополнительном коде — тогда вычитание не требует отдельной схемы.

Первый микропроцессор Intel 4004 (1971) делали для калькулятора, поэтому он умел считать и десятичными цифрами — команда DAA, «десятичная поправка». У 6502, процессора Apple II и NES, для этого есть десятичный режим. Это коррекция «+6» из бонус-урока.

Intel, Apple, Nintendo и Bell Labs — торговые марки своих владельцев. Набор не связан с ними и не одобрен ими; названия упоминаются, чтобы рассказать историю.