Jump to content

Флаг переполнения

В компьютерных процессорах флаг переполнения (иногда называемый флагом V ) обычно представляет собой один бит в регистре состояния системы , используемый для индикации того, что в операции произошло арифметическое переполнение, указывающее, что результат с дополнением до двух со знаком не помещается в количество битов, используемых для результата. Некоторые архитектуры могут быть настроены на автоматическую генерацию исключения для операции, приводящей к переполнению.

Например, предположим, что мы сложили 127 и 127, используя 8-битные регистры. 127+127 равно 254, но при использовании 8-битной арифметики результатом будет 1111 1110 в двоичном виде, что представляет собой кодировку с дополнением до двух отрицательного числа -2. Отрицательная сумма положительных операндов (или наоборот) является переполнением. Затем будет установлен флаг переполнения, чтобы программа могла знать о проблеме и смягчить ее или сигнализировать об ошибке. Таким образом, флаг переполнения устанавливается, когда старший бит (здесь он считается битом знака) изменяется путем сложения двух чисел с одинаковым знаком (или вычитания двух чисел с противоположными знаками). Переполнение не может произойти, если знаки двух операндов сложения различны (или знаки двух операндов вычитания одинаковы). [1]

Когда двоичные значения интерпретируются как числа без знака , флаг переполнения не имеет смысла и обычно игнорируется. Одним из преимуществ арифметики с дополнением до двух является то, что для операций сложения и вычитания не требуется различать знаковые и беззнаковые операнды. По этой причине большинство наборов компьютерных команд не различают знаковые и беззнаковые операнды, генерируя как флаги (знакового) переполнения, так и (беззнаковые) флаги переноса для каждой операции, и оставляя возможность следовать инструкциям, чтобы обратить внимание на тот, который представляет интерес. [2]

На внутреннем уровне флаг переполнения обычно генерируется посредством исключающего или внутреннего переноса в и из него знаковый бит .

Побитовые операции (и, или, xor, not, Rotate) не имеют понятия знакового переполнения, поэтому определяемое значение варьируется в зависимости от архитектуры процессора. Некоторые процессоры очищают бит безоговорочно (что полезно, поскольку побитовые операции устанавливают флаг знака, а флаг очистки переполнения указывает, что флаг знака действителен), другие оставляют его неизменным, а некоторые устанавливают для него неопределенное значение. Сдвиги и умножения позволяют получить четко определенное значение, но оно не реализуется последовательно. Например, набор команд x86 определяет флаг переполнения только для умножений и 1-битных сдвигов; многобитовые сдвиги оставляют его неопределенным.

  1. ^ Холодов, Игорь (1 ноября 2008 г.). «Обнаружение переполнения: сложение знаковых чисел» . CIS77 Введение в компьютерные системы (конспекты курса). Бристольский общественный колледж . Проверено 30 декабря 2020 г.
  2. ^ Аллен, Ян Д. (25 февраля 2011 г.). «Флаг CARRY и флаг OVERFLOW в двоичной арифметике» . DAT 2343 Архитектура компьютерных систем (конспекты курса). Алгонкинский колледж .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8741afcf15af45e80f1191e4686047ff__1666162980
URL1:https://arc.ask3.ru/arc/aa/87/ff/8741afcf15af45e80f1191e4686047ff.html
Заголовок, (Title) документа по адресу, URL1:
Overflow flag - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)