Переполнение в двоичной арифметике: влияние знакового бита на сложение
При работе со знаковыми двоичными числами сложение или вычитание могут выйти за пределы модуля, который может представить фиксированное число бит. Это явление — переполнение — возникает, потому что позиция знакового бита фиксирована до начала вычислений.
В примере ниже пять бит под модуль и шестой (левый) — знаковый. С пятью бит модуля можно представить 2⁵ = 32 целых значения, от 0 до максимума. Следовательно, наибольшее положительное — +31₁₀ (011111₂), наименьшее — –32₁₀ (100000₂).
Ограничения шестибитового поля
Складывая два числа в одном шестибитовом поле, результат может выйти за диапазон –32 … +31. Например, +17₁₀ + +19₁₀ = +36₁₀, что не помещается в пять бит модуля.
Двоичный ответ 100100₂ интерпретируется как –28₁₀, если шестой бит трактуется как –32₁₀. Очевидно, это неверно; ошибка переполнения, так как истинная сумма выходит за пределы поля. Отбрасывание левого «переносного» бита даёт неверный результат.
Сложение двух отрицательных чисел даёт похожую проблему. –17₁₀ + –19₁₀ должно быть –36₁₀, но в шестибитовом поле результат — положительное 28, снова переполнение.
Использование седьмого бита для знака
Расширив поле до семи бит — шесть под модуль, один под знак — можно вместить большие суммы. Диаграммы ниже показывают решение тех же задач при достаточной ширине.
Хотя переполнение можно обнаружить, переводя результат обратно в десятичное, это громоздко и неудобно для электронных схем. Эффективный метод опирается на знак суммы. Если два числа с одинаковым знаком дают результат с противоположным знаком — произошло переполнение. Два положительных не могут дать отрицательный, два отрицательных — положительный при адекватном поле.
Наоборот, сложение положительного и отрицательного никогда не переполняется. Результирующая сумма всегда ближе к нулю, чем любой слагаемое, гарантируя попадание в представимый диапазон.
Эти правила обнаружения переполнения реализованы в цифровых сумматорах и являются базовым понятием компьютерной арифметики.
СВЯЗАННЫЕ РАБОЧИЕ ЛИСТЫ:
- Рабочий лист по двоичной математике
Промышленные технологии
- Электроника: практичная наука для всех
- Настройка домашней электроника-лаборатории: инструменты, рабочая зона и расходники
- Мастерство вольтметра: точное измерение напряжения стало простым
- 3-битный двоичный счетчик на таймере 555 и триггерах 4027
- Десятичная и двоичная системы: разрядный вес, эффективность и преобразование
- Восьмеричная и шестнадцатеричная системы: практическое руководство для инженеров
- Двоичное вычитание с использованием двухкратного дополнения
- Переливные трубы: функция, значение для безопасности и применение
- Эффективная сборка ARM-контейнеров на x86 системах
- Создание первого Go-приложения на PLCnext: руководство для начинающих