Нормализация результата сложения вещественных чисел

Немного запутался в теме нормализации мантисс вещественных чисел после различных арифметических операций, которые мы проводим между ними. Точнее есть ситуация, которая вызывает у меня вопросы.

Недавно складывал между собой вещественные числа в формате binary32 и возникла ситуация, которую я описываю в данном вопросе. В качестве операндов были числа с разными знаками (уже описывал результат этого сложения в своём предыдущем вопросе, но всё-таки повторюсь): 1234.5678 и -987.6543.

Фактически вычитаем один операнд из другого, но я решил представить эту операцию в виде сложения двух чисел, где отрицательное значение будет записано в дополнительном коде.

Исходные мантиссы:

1234.56781.00110100101001000101011

-987.65431.11101101110100111100000

Выравниваю порядки путём сдвига разрядов на 1 шаг внутри мантиссы числа -987.65430.11110110111010011110000

Затем выполняю дополнительный код для мантиссы, так как имеем дело с отрицательным числом — 0.00001001000101100010000

И вот мы подошли к ключевому моменту. Я складываю мантиссы между собой: 0.00001001000101100010000 и 1.00110100101001000101011. В дробной части результирующей мантиссы не наблюдается переполнения, а результат сложения 0. и 1., значений, которые отражали состояние неявного нормализующего разряда, по логике вещей должен дать значение 1., но этого почему-то не происходит. Вроде бы и нормализованная мантисса должна получиться сходу, если чисто на арифметику ссылаться, но по факту, если ориентироваться на калькуляторы и на ожидаемый результат, то там по какой-то причине 0 вылазит и нам нужно дополнительно выравнивать порядок, чтобы прийти к нормализованной форме.

Что я не учёл в данной ситуации? Очевидно, что проблема в том, что один из операндов представляет собой отрицательное число и мы оборачиваем его в дополнительный код. Но я хочу понять логику и то, как в данном случае работает арифметика и как мы получаем ноль. Может быть вместо сложения целые части мантисс необходимо вычитывать? В общем, подскажите, пожалуйста! Буду премного благодарен!


Ответы (0 шт):