Skip to main content

14. Вычитание

14. Вычитание

🎯 Цель урока
Понять дополнительный код и реализовать вычитание через сумматор.

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

Как вычитать в железе?

Проблема: Отдельная схема вычитания — сложно и дорого.

Решение: Вычитание через сложение!

$$A - B = A + (-B)$$

Но как представить отрицательное число?

Дополнительный код (Two’s Complement)

Для N-битного числа:

$$-B = \overline{B} + 1$$

Где $\overline{B}$ — инверсия всех битов (NOT).

Пример: -3 в 4 битах

 3 = 0011
─────────────
Инверсия:
~3 = 1100

Добавляем 1:
1100 + 0001 = 1101

Проверка: 1101 = -3 в дополнительном коде

Почему это работает?

  5 - 3 = 5 + (-3)
  
  0101  (5)
+ 1101  (-3 в доп. коде)
───────
 10010
  отбрасываем (переполнение)
  
Результат: 0010 = 2 ✓

Формула вычитания

$$A - B = A + \overline{B} + 1$$

Схема:

  1. Инвертируем B (XOR с 1)
  2. Подаём на сумматор
  3. C₀ = 1 (это “+1” из формулы)

🔧 Фаза 3: Собираем вычитатель (25 мин)

Идея схемы

         SUB (режим: 0=сложение, 1=вычитание)
    B ───────XOR───────┐
    A ─────────────────┼─── 74HC283 ─── Результат
    SUB ───────────────┴─── C₀

Когда SUB = 0: B проходит как есть, C₀ = 0 → сложение Когда SUB = 1: B инвертируется, C₀ = 1 → вычитание

Компоненты

КомпонентКоличество
74HC2831
74HC86 (XOR)1
DIP-переключатель 4-поз2
Переключатель SUB1
LED5

Схема соединений

    Переключатель SUB ──┬──────────────────┐
                        │                  │
    B1 ─────────────────┼── XOR Pin 1 ─┐   │
                        └── XOR Pin 2 ─┴── Pin 3 ── 74HC283 B1
                        
    (аналогично для B2, B3, B4)
    
    SUB ──────────────────────────────────── 74HC283 C0

Полная схема

    A[4:1] ──────────────────────┐
    B[4:1] ──┬── 74HC86 ─────────┼── 74HC283 ─── Σ[4:1], C4
             │   (×4 XOR)        │
    SUB ─────┴───────────────────┴── C0

Тестирование

ABSUBОперацияРезультатC₄
5 (0101)3 (0011)05 + 38 (1000)0
5 (0101)3 (0011)15 - 32 (0010)1
3 (0011)5 (0101)13 - 5-2 (1110)0
7 (0111)7 (0111)17 - 70 (0000)1
⚠️ Знаковое переполнение
При вычитании C₄ = 1 означает положительный результат. C₄ = 0 при SUB = 1 означает отрицательный результат!

💡 Отрицательные числа

Диапазон 4-битных знаковых чисел

ДвоичноеБеззнаковоеЗнаковое
000000
00011+1
01117+7
10008-8
10019-7
111115-1

Старший бит = знак: 0 = положительное, 1 = отрицательное


📝 Мини-задания

Как представить -5 в 4-битном дополнительном коде?

Ответ:

  • 5 = 0101
  • ~5 = 1010
  • +1 = 1011
  • -5 = 1011

Что подать на C0 для вычитания?

Ответ: 1 (это “+1” в формуле A + ~B + 1)

Какой диапазон знаковых 4-битных чисел?

Ответ: от -8 до +7


✅ Чеклист

  • Понимаю дополнительный код
  • Знаю формулу A - B = A + ~B + 1
  • Собрал универсальный сумматор/вычитатель
  • Проверил отрицательные результаты

➡️ Следующий урок

15. Компаратор →