Сумматоры: как вентили складывают числа
Процессор никто не учил складывать. Несколько вентилей, соединённых вместе, выдают ответ разряд за разрядом.
Ты уже складываешь двоичные числа — ты делал это в младших классах с десятичными и просто не замечал. Сначала складываешь самый правый разряд, записываешь результат и передаёшь всё, что не поместилось, в следующий разряд слева. Этот перенос называется carry. При сложении двух двоичных цифр возможны всего четыре случая, и в двух из них возникает перенос.
0 + 0 = 0 carry 0
0 + 1 = 1 carry 0
1 + 0 = 1 carry 0
1 + 1 = 0 carry 1Всё, что может сделать один разрядПосмотри на эту таблицу ещё раз. Столбец суммы — это в точности XOR: 1, когда биты разные, и 0, когда одинаковые. Столбец переноса — это в точности AND: 1 только тогда, когда оба бита равны 1. Значит, схеме для сложения двух бит не нужно ничего изобретать: нужен один вентиль XOR и один вентиль AND. Эта пара называется полусумматором, и это самая маленькая деталь арифметики, какая бывает.
У полусумматора есть пробел: ему некуда положить перенос, пришедший из разряда справа. Добавь третий вход для этого входящего переноса — и получишь полный сумматор. Он собирается из двух полусумматоров и одного вентиля OR: полусумматоры дают сумму, а OR объединяет два переноса, которые они породили. Соедини 64 полных сумматора — и сможешь складывать два 64-битных числа.
Практика
Чему равно 1011 + 0001 в двоичной системе?
Подсказки
- Складывай разряд за разрядом справа налево, точно как в десятичной арифметике.
- Перенос из первого разряда никуда не исчезает — он идёт в следующий разряд.
15 XP
Сопоставь каждый выход полусумматора с вентилем, который его вырабатывает.
Подсказки
- Одна строка описывает бит суммы, другая — бит переноса: это разные вентили.
- Перенос возникает, только когда оба бита равны 1; сумма равна 1, когда единица ровно одна.
15 XP
Расставь шаги, которыми складывают 11 + 1 в двоичной системе и получают 100.
Подсказки
- Полный сумматор — это полусумматор, у которого есть куда положить входящий перенос.
- Два полусумматора дают сумму, а перенос наружу — это OR от того, что породил каждый из них.
15 XP