Умножение и деление чисел в форме с плавающей точкой - Компьютерная арифметика

Представим операцию умножения в виде:

Z = X - Y. (5.19)

Тогда:

. (5.20)

Где:

; .

Знак произведения определяют путем суммирования по модулю 2 цифр в знаковых разрядах сомножителей: .

При умножении чисел в форме с плавающей запятой порядок результата определяется путем сложения порядков сомножителей. Для определения мантиссы результата производят умножение мантисс операндов как чисел с фиксированной точкой по любому из рассмотренных алгоритмов. Мантисса произведения может оказаться ненормализованной, причем возможно только правое нарушение нормализации на один разряд. В этом случае мантиссу надо удвоить, сдвинув ее на один разряд влево, а из порядка произведения вычесть единицу.

Представим операцию деления в виде:

Z = X/Y. (5.21)

Следует помнить, что при делении чисел с плавающей точкой остатка не бывает:

(5.22)

Где:

; .

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

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

Для этого удобно использовать дополнительные коды. В процессе выполнения операций над порядками возможно как переполнение порядков, так и антипереполнение.

Общий алгоритм выполнения операций умножения и деления:

    - определение знака результата; - сложение и вычитание порядков; - умножение и деление мантисс; - нормализация результата; - округление результата.

Как отмечалось ранее, необходимость округления результата вызвана тем, что при нормализации результата может выполняться правый сдвиг мантиссы результата и младший ее разряд при этом выходит за пределы разрядной сетки. Если считать, что результат представлен прямым кодом, то отбрасывание этого разряда вносит в абсолютную величину результата либо нулевую погрешность (если отбрасывается цифра 0), либо погрешность, равную 1/2 веса младшего разряда (если отбрасывается цифра 1). Для того, чтобы погрешность по абсолютной величине результата была знакопеременной и ее среднее значение в достаточно большой последовательности операций было равно нулю, округление следует производить следующим образом. Если за пределы разрядной сетки сдвигается цифра (1), то младший разряд мантиссы результата устанавливают в единицу независимо от того, какая цифра была в этом разряде ранее. В другом случае значение младшего разряда не меняют.

Пусть( хM) - младшая цифра мантиссы результата до округления, (х'M) - та же цифра после округления, (xM+1) - цифра мантиссы, выходящая за пределы разрядной сетки при округлении, () - погрешность округления. Тогда все возможные ситуации при округлении иллюстрируются табл. 11.4, из которой видно, что при таком округлении погрешность абсолютной величины мантиссы результата будет равна 0 или ±1/2 веса младшего разряда, а ее среднее значение равно нулю.

Таблица 5.3 - Результаты округления мантиссы результата

XM

XM+1

X'M

0

0

0

0

0

1

1

+(1/2)2-m

1

0

1

0

1

1

1

-(1/2)2-m

Похожие статьи




Умножение и деление чисел в форме с плавающей точкой - Компьютерная арифметика

Предыдущая | Следующая