4.13. ДЕЛЕНИЕ ЧИСЕЛ В МАШИНАХ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
Если числа А и В заданы в нормальной форме, то их частное будет равно
где
— мантиссы, а
и
— порядки соответственно чисел
Отсюда следует, что операция деления в машинах с плавающей запятой выполняется в пять этапов.
1-й этап. Определение знака частного путем сложения по модулю 2 знаковых цифр мантисс операндов.
2-й этап. Деление модулей мантисс операндов по правилам деления чисел с фиксированной запятой.
3-й этап. Определение порядка частного путем вычитания порядка делителя из порядка делимого.
4-й этап. Нормализация результата и его округление.
5-й этап. Присвоение знака мантиссе результата.
Два первых этапа полностью совпадают с этапами деления чисел с фиксированной запятой. Третий этап представляет собой обычное сложение в инверсных кодах.
При делении нормализованных чисел денормализация результата возможна только влево и только на один разряд. Это обусловлено тем, что мантисса любого нормализованного числа лежит в пределах
Тогда наименьшая и наибольшая возможные величины мантиссы частного равны соответственно
т. е. мантисса частного лежит в пределах
Поэтому на четвертом этапе может возникнуть необходимость нормализации мантиссы частного путем ее сдвига вправо на один разряд и увеличения порядка частного на единицу. Если же перед делением сдвинуть делимое на один разряд вправо, то на
этапе может потребоваться нормализация результатов влево на I разряд.
Пример. Заданы
;
1-й этап: определение знака частного:
2-й этап: деление мантисс:
этап: определение порядка частного
Перевод порядка частного в прямой код:
4-й этап: частное получилось нормализованным, поэтому производится только округление мантиссы.
5-й этап: результат
При выполнении третьего этапа порядок частного может оказаться больше допустимого, т. е. произойдет переполнение разрядной сетки, которое расценивается как аварийная ситуация. Может быть также получен порядок частного, который меньше допустимого. Если на втором этапе вычислено частное
то на четвертом этапе при сдвиге частного вправо его порядок должен быть увеличен на единицу. При этом становится окончательно ясно, во-первых, возникло ли переполнение разрядной сетки порядка или нет, во-вторых, будет ли порядок частного меньше допустимого значения. Если имеет место исчезновение порядка, то результат деления по указанию программиста заменяется машинным нулем.