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 ✓
Формула вычитания
Схема:
- Инвертируем B (XOR с 1)
- Подаём на сумматор
- C₀ = 1 (это “+1” из формулы)
🔧 Фаза 3: Собираем вычитатель (25 мин)
Идея схемы
SUB (режим: 0=сложение, 1=вычитание)
│
▼
B ───────XOR───────┐
│
A ─────────────────┼─── 74HC283 ─── Результат
│
SUB ───────────────┴─── C₀
Когда SUB = 0: B проходит как есть, C₀ = 0 → сложение Когда SUB = 1: B инвертируется, C₀ = 1 → вычитание
Компоненты
| Компонент | Количество |
|---|---|
| 74HC283 | 1 |
| 74HC86 (XOR) | 1 |
| DIP-переключатель 4-поз | 2 |
| Переключатель SUB | 1 |
| LED | 5 |
Схема соединений
Переключатель 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
Тестирование
| A | B | SUB | Операция | Результат | C₄ |
|---|---|---|---|---|---|
| 5 (0101) | 3 (0011) | 0 | 5 + 3 | 8 (1000) | 0 |
| 5 (0101) | 3 (0011) | 1 | 5 - 3 | 2 (0010) | 1 |
| 3 (0011) | 5 (0101) | 1 | 3 - 5 | -2 (1110) | 0 |
| 7 (0111) | 7 (0111) | 1 | 7 - 7 | 0 (0000) | 1 |
⚠️ Знаковое переполнениеПри вычитании C₄ = 1 означает положительный результат. C₄ = 0 при SUB = 1 означает отрицательный результат!
💡 Отрицательные числа
Диапазон 4-битных знаковых чисел
| Двоичное | Беззнаковое | Знаковое |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | +1 |
| 0111 | 7 | +7 |
| 1000 | 8 | -8 |
| 1001 | 9 | -7 |
| 1111 | 15 | -1 |
Старший бит = знак: 0 = положительное, 1 = отрицательное
📝 Мини-задания
✅ Чеклист
- Понимаю дополнительный код
- Знаю формулу A - B = A + ~B + 1
- Собрал универсальный сумматор/вычитатель
- Проверил отрицательные результаты
