Смекни!
smekni.com

Выполнение операций алгебраического сложения и сдвига в ЭВМ (стр. 3 из 4)

порядок мантисса

[B’]пр =0 101 1,011001;

[a]д=11,010110

[b]д=11,100111

[с]д=10,111101

Так как мантисса результата денормализована влево, то ее необходимо сдвинуть на 1 разряд вправо и при этом порядок увеличить на 1.

[С]д=0 110 11,0111101; [С]пр=0 110 11,1000011.


3.Округление чисел в ЭВМ

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

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

Таким образом, причинами погрешностей вычислений в ЭВМ могут быть:

1) неточное задание исходных данных, участвующих в выполнении операции (либо из-за ограничений разрядной сетки машины, либо из-за погрешностей перевода информации из одной системы счисления в другую);

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

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

3.1 Округление чисел в прямом коде

Если предположить, что исходная информация не содержит никаких ошибок и все вычислительные процессы выполняются абсолютно точно, то всегда существует третий тип ошибок — ошибки округления, которые возникают при переводе чисел из одной системы счисления в другую и последующем представлении их в разрядной сетке машины, а также при получении внутри машины чисел, разрядностью большей, чем это допустимо, например, при умножении. В этом случае число А округляют, т. е. заменяют его машинным числом [A] заданной разрядности. Округление (обозначим его знаком ¨) называется оптимальным, если для любого машинного числа [A] справедливо ¨А=[A]. Пусть [A]1и [A]2 - два последовательных машинных числа, тогда при оптимальном округлении вещественное число A такое, что [A]1‹A‹ [A]2 заменяется либо числом [A]1, либо числом [A]2. Если ¨А≤A, то говорят об округлении по недостатку, если ¨А ≥A, то говорят об округлении по избытку. Округление называют симметричным, когда ¨А= -¨(-А). Различают три вида симметричного округления.

1. Округление в направлении к нулю, когда вещественное число округляется до ближайшего к нулю машинного числа.

2. Округление в направлении от нуля, когда округление производится до машинного числа, лежащего дальше от нуля, чем вещественное число А.

3. Округление по дополнению, когда округление производится до ближайшего машинного числа.

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

max , где
= А-[A], и математическое ожидание погрешности округления
.

Округление к нулю или усечение.

Для конкретности считаем, что числа в машине представлены в прямом коде с запятой, фиксированной перед старшим разрядом, [A]= а-1...a-n(правильная дробь). Пусть в результате каких-либо действий над машинными числами внутри машины сформировалось число [А]', имеющее k = n + t разрядов. Очевидно, что самый простой способ округления состоит в отбрасывании хвоста числа [А]', который состоит из лишних разрядов, т.е. разрядов с номерами а-n-1, a-n-2, ... ,a-n-t.

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

= 0.

Обычно вероятность появления чисел разного знака при выполнении определенной программы не одинакова, поэтому представляет интерес округление абсолютных величин, т. е. фактически чисел одного знака.

При действиях с числами одного знака погрешность усечения носит систематический характер, что приводит к накоплению погрешности. Это обстоятельство заставляет исследовать другие способы округления, которые рассматриваются пока для прямых кодов.

Округление от нуля.

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

Округление по недостатку.

Реализация данного способа базируется на анализе знака округляемого числа. Если [А]'> 0, то округление заключается в отбрасывании хвоста. Если же [А]' < 0, то хвост также отбрасывается, а к величине оставшейся части добавляется единица в младший разряд, если хвост не равен нулю. Таким образом, реализация данного способа еще более усложнена по сравнению со способом округления от нуля за счет анализа знака числа [А]', хотя величина

max осталась при этом прежней.

Если рассматривать округление чисел только одного знака, то при А' > 0 данный способ совпадает с усечением, а при А' < 0 - с округлением от нуля. Отсюда ясно, что он не может конкурировать с усечением результатов.

Округление по избытку.

Этот способ во всем подобен предыдущему, с тем отличием, что добавление единицы в младший разряд сохраняемой части числа производится, когда оно больше нуля и хвост не равен нулю. При А'<0 хвост просто отбрасывается. Характеристики данного способа точно такие же, как у предыдущего, за исключением знака величины

, который меняется на противоположный.

Округление по дополнению.

Данный способ представляет собой объединение способов округления от нуля и к нулю. Его реализация связана с коррекцией сохраняемой части числа А', которая производится по результатам анализа значения старшей цифры отсекаемой части a-n-1, т. е. цифры дополнительного (n + 1)-го разряда (ДР). Когда (n + 1 разряд) = 0, происходит округление к нулю, в противном случае - от нуля.

В случае равновероятного появления чисел разных знаков и равномерного распределения вероятностей появления различных значений хвоста числа математическое ожидание погрешности округления равно нулю. Однако при округлении чисел одного знака значение

отлично от нуля. Поэтому при округлении чисел одного знака данный способ дает систематические ошибки округления, хотя и меньшие, чем при усечении.

По своим характеристикам способ округления по дополнению лучше, чем усечение. Систематические ошибки при округлении чисел одного знака обусловлены в данном случае тем, что округление особенно неточно производится, когда значение отсекаемой части близко к половине единицы младшего сохраняемого разряда. Этот недостаток устраняется в следующем способе округления.

Усовершенствованное округление по дополнению.

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

Упрощенное округление по дополнению.

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

При этом если в неокругленном результате разряд а-n равен единице, то он не изменяется при округлении. Если в неокругленном результате операции значение разряда а-n есть нуль, то установка его в единицу вносит погрешность.

Таким образом, при равновероятном появлении нуля и единицы в младшем разряде сохраняемой части для знакопеременных чисел снова получим симметричное распределение погрешностей.

Вероятностное округление.