SkillGridИзучай computer science на практике

Сумматоры: как вентили складывают числа

Процессор никто не учил складывать. Несколько вентилей, соединённых вместе, выдают ответ разряд за разрядом.

14 мин · 45 XP

Ты уже складываешь двоичные числа — ты делал это в младших классах с десятичными и просто не замечал. Сначала складываешь самый правый разряд, записываешь результат и передаёшь всё, что не поместилось, в следующий разряд слева. Этот перенос называется 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-битных числа.

Bit 0Full adder 0Full adder 1Full adder 21 + 1 in the first columnA=1, B=1, carry in=0sum 0, carry 1the carry becomes a real input heresum 0, carry 1nothing left to add, carry out is the new top bit

Практика

  1. Чему равно 1011 + 0001 в двоичной системе?

    Подсказки
    • Складывай разряд за разрядом справа налево, точно как в десятичной арифметике.
    • Перенос из первого разряда никуда не исчезает — он идёт в следующий разряд.

    15 XP

  2. Сопоставь каждый выход полусумматора с вентилем, который его вырабатывает.

    Подсказки
    • Одна строка описывает бит суммы, другая — бит переноса: это разные вентили.
    • Перенос возникает, только когда оба бита равны 1; сумма равна 1, когда единица ровно одна.

    15 XP

  3. Расставь шаги, которыми складывают 11 + 1 в двоичной системе и получают 100.

    Подсказки
    • Полный сумматор — это полусумматор, у которого есть куда положить входящий перенос.
    • Два полусумматора дают сумму, а перенос наружу — это OR от того, что породил каждый из них.

    15 XP