Сложение и вычитание, установка флагов

  • 27 мая 2010 г.
  • 551 Слова
Вылиток А.А., Грацианова Т.Ю.
Сложение и вычитание, установка флагов

Определим операции сложения и вычитания на множестве битовых наборов длины k. Пусть x и y – битовые наборы. Перенумеруембиты наборов справа налево от 0 до k-1. Через zi будем обозначать i-й бит набора z, ziÎ{0,1}. Для определения результатов (суммы и разности) воспользуемся некоторыми логическими операциями (дизъюнкция,конъюнкция, отрицание, сложение по модулю два), интерпретируя 0 как ложь, 1 как истину.
Суммой (соответственно, разностью) битовых наборов x и y назовем набор z, разряды которого определяются следующимисоотношениями (попутно определим набор величин ci , i=0,…,k , ciÎ{0,1}, где ci означает наличие (при ci=1) или отсутствие (при ci=0) переноса единицы в i-й разряд, а в случае вычитания – заёма из i-горазряда):

Здесь Å означает операцию сложения по модулю два, Ú – дизъюнкцию, знак конъюнкции (умножения) опущен.
Если рассматривать битовые наборы как представление беззнаковых целых чисел илизнаковых в дополнительном коде, то определенные выше операции над битовыми наборами реализуют сложение и вычитание целых чисел по модулю 2k. Во многих ЭВМ схемы сложения и вычитания чисел устроены именно так.Поскольку при подобных операциях результат может быть искажен (из-за переполнения мантиссы), для отслеживания этой ситуации одновременно с результатом устанавливаются специальные флаги.
Флаг – этобит, принимающий значение 1 ("флаг установлен"), если выполнено некоторое условие, и значение 0 ("флаг сброшен") в противном случае. Наиболее употребительны флаги: CF (carry flag, флаг переноса;устанавливается при искажении результата операции над числами без знака, например, полученная сумма "не умещается" в k-разрядную ячейку), OF (overflow flag, флаг переполнения; фиксирует искажение результатаоперации над знаковыми числами), ZF (zero flag, флаг нуля; фиксирует нулевой результат), SF (sign flag, флаг знака; устанавливается в 1, если в операции над знаковыми числами...