Если значения являются целыми числами в диапазоне -A ... + A, то результат сложения их вместе находится в диапазоне -2A ... + 2A.Чтобы нормализовать результат, вам нужно сдвинуть влево или вправо, чтобы вернуть наиболее значимый 1 бит обратно в нормализованное положение, отслеживая, насколько вы сместились, чтобы вы могли соответствующим образом скорректировать показатель степени.
Максимально необходимое правосдвиг на одну позицию;сдвиг влево может быть больше, если ваши аргументы могут быть положительными или отрицательными.Простой способ сделать это - петля в стиле while
, смещаясь влево на единицу, пока MSB не окажется там, где вам нужно.
Алгоритм для нахождения наименьшей степени двух, которая больше или равнаданное значение имеет некоторые альтернативные возможности, если вы хотите что-то быстрее (хотя ничего для MIPS).