Двоичное вычитание с использованием двухкратного дополнения
Двоичное вычитание можно выполнять классическим заимствованием бит, но проще — через арифметику двухкратного дополнения. Преобразуя вычитаемое в отрицательную двоичную форму и складывая, операция сводится к одному двоичному сложению.
Дважды дополнительный код позволяет кодировать отрицательные числа в той же разрядности, что и положительные, используя старший «бит отрицательного веса». При сложении положительного и отрицательного числа этот бит ведёт себя как отрицательный вес, фактически выполняя вычитание.
Пример 1: 7₁₀ − 5₁₀
Представим в двухкратном дополнении с тремя бит данными и одним знаковым:
положительная семь = 0111₂
отрицательная пять = 1011₂
Складываем:
1111 ← Переносы
0111
+ 1011
------
10010
|
Отбрасываем переполнение
Результат = 0010₂
Переполненный бит отбрасывается, так как старшая позиция — отрицательный вес (−8). Итоговый 4-битовый образец 0010₂ равен десятичному 2, подтверждая 7 − 5 = 2.
Пример 2: 18₁₀ + (−25)₁₀
Определим нужную разрядность. Максимальный модуль — 25, требует 5 бит; добавим знаковый — итого 6 бит.
Представим +25 и его двухкратное дополнение:
+25₁₀ = 011001₂ (6 бит)
Однократное дополнение 11001₂ = 100110₂
Прибавить 1 → Дважды доп. = 100111₂
−25₁₀ = 100111₂
Положительные 18:
18₁₀ = 010010₂
Складываем:
11 ← Переносы
100111
+ 010010
------
111001
Переполнения нет, результат 111001₂ остаётся. Старший бит 1 указывает на отрицательное значение в двухкратном дополнении. Обратный перевод в десятичное:
(1 × −32) + (1 × 16) + (1 × 8) + (1 × 1) = −7
Таким образом, 18 + (−25) = −7, как и ожидалось.
СВЯЗАННЫЕ РАБОЧИЕ ЛИСТЫ:
- Рабочий лист по двоичной математике
Промышленные технологии
- Электроника: практичная наука для всех
- Настройка домашней электроника-лаборатории: инструменты, рабочая зона и расходники
- Мастерство вольтметра: точное измерение напряжения стало простым
- Мастерство измерений омметром: практическое руководство по тестированию сопротивления
- Сборка и траблшутинг базовой 6-вольтовой батарейно-ламповой цепи
- 3-битный двоичный счетчик на таймере 555 и триггерах 4027
- Десятичная и двоичная системы: разрядный вес, эффективность и преобразование
- Восьмеричная и шестнадцатеричная системы: практическое руководство для инженеров
- Эффективная сборка ARM-контейнеров на x86 системах
- Создание первого Go-приложения на PLCnext: руководство для начинающих