Skip to content
4.1 · Вычитание и дополнительный код

4.1 · Вычитание и дополнительный код

Цель. Научить сумматор вычитать — не строя ни одной новой схемы. Понять дополнительный код как главную идею машинной арифметики.

🎣 Крючок + прогноз (5 мин)

«В 74HC283 нет входа “минус”. Тем не менее любой процессор вычитает миллиарды раз в секунду тем же сумматором. Прогноз: как заставить сложение вычитать?»

🧠 Теория (14 мин)

Трюк циферблата

На 12-часовом циферблате «−3» и «+9» — одно и то же движение. В 4-битном мире (16 состояний) «−B» — то же, что «+(16−B)». Вычитание превращается в сложение с «дополнением».

Дополнительный код за два шага

−B = инвертировать все биты B и прибавить 1. Проверка: B=3 (0011) → инверсия 1100 → +1 = 1101 (это 13; и правда, 16−3=13). Тогда 7−3 = 7+13 = 20 = 1 0100 → отбрасываем вылезший пятый бит → 0100 = 4. Работает.

Где взять «инвертировать по команде»?

Вспомните ⭐⭐ урока 2.2: XOR — это НЕ с выключателем. Пропускаем каждый бит B через XOR с общей линией SUB: SUB=0 → B проходит как есть (сложение); SUB=1 → B инвертируется. А «+1»? Подаём тот же SUB на вход переноса C0 сумматора. Одна линия управления переключает операцию — красивейший трюк цифровой техники:

  B ──[XOR×4]──┐
        │      [74HC283]── Σ
  SUB ──┴─► C0─┘
  A ───────────┘

🔧 Практика (20 мин)

Модернизация калькулятора

К схеме урока 2.5 добавьте 74HC86 на пути B и тумблер SUB (на все 4 XOR и на C0).

Прогноз → проверка

SUB=0: 7+3=10. SUB=1: 7−3=4 (перенос C4=1 при вычитании игнорируем — это «вылезший» бит циферблата). Ещё: 5−5, 9−2, 3−7 (!)

⭐⭐ Отрицательный результат

3−7 дал 1100. В дополнительном коде это… −4: старший бит = знак. Проверьте на 2−6, 1−8. Заполните таблицу соответствия 1000…1111 ↔ −8…−1.

✅ Чек-лист

  • Выполняю дополнение вручную (инверсия + 1)
  • Собрал сумматор-вычитатель с линией SUB
  • ⭐⭐ Читаю отрицательные результаты по старшему биту