Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
10.05.2014
Размер:
116.31 Кб
Скачать

ДЕЙСТВИЯ НАД ЧИСЛАМИ

С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

1

ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

ХПЗ Мх * 2Пх

125= 125*100 = 1,25*102 = 0,125*103 = 0,00125*105 = ...

Для однозначного представления числа его мантисса должна удовлетворять условиям нормализации:

1 | Mx | 2 1

125пз = 0,125*103

разрядная сетка = nразр.

<знак числа><мантисса><знак порядка><порядок>

Будем считать, что

для изображения порядка отводится m двоичных разрядов,

а для изображения мантиссы – n двоичных разрядов без учёта знаков.

ДИАПАЗОН ПРЕДСТАВЛЕНИЯ В ЭВМ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

ХПЗ Мх * 2Пх

мах| = Ммах * 2П хмах = ((1 - 2-n) * 2 2m -12 2m -1 | ХMIN | = МMIN * 2 хмах = 2-1 * 2 -(2 m -1)= 2 -2 m

ПОГРЕШНОСТИ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

ХПЗ Мх * 2Пх

Абсолютная погрешность представления в ЭВМ числа с плавающей запятой :

| X | (0,5 * 2-n ) * 2Пх

Относительная погрешность представления в ЭВМ числа с плавающей запятой:

δ [Х]

мин

= [Х] / (М * ) = (0.5 *2-n)*

) / ((1 - 2-n)* ) = (0.5 *2-n) / (1-2-n) ≈ 0.5 * 2-

 

макс

2Пх

2Пх

n

 

2Пх

 

 

 

 

δ [Х]макс = [Х] / Хмин = (0.5 *2-n)*

2Пх

2Пх

) / (

* 2-1) = 2-n

Умножение чисел с плавающей запятой

X Mx * 2Пх

Y MY * 2Пy

ZХ *Y Mz * 2Пz

1.Пz = Пx + Пy

2.Mz = Mx * My

Пример. (0,3*103) * (0,2*102) = (0,3 * 0,2) *103+2 = 0,06 * 105 = 0,6* 104

Особые случаи при умножении чисел с плавающей запятой

1. Пz = Пx + Пy

1а. Если Пz = - ∞, то Z=0 = 0.0...0 0.0...0

Порядок Мантисса

1б. Если Пz = + ∞, то продолжить умножение.

2. Mz = Mx * My

Т.к. |Mx| ≥ 2-1, |My| ≥ 2-1, то |Mz| ≥ 2-2

Возможная область ненормализованной мантиссы: 2-1 > |Mz| ≥ 2-2

Если |Mz| < 2-1, то выполнить нормализацию мантиссы с одновременной коррекцией порядка.:

|Mz| = |Mz| * 2+1 Пz = Пz -1

Если в результате получим Пz = - ∞, то Z=0.

Если в ходе перемножения мантисс получим |Mz| ≥ 2-1 , но при обработке порядков получили Пz = + ∞, то Z = ∞

При Z=0 выполнение программы в ЭВМ продолжается. При Z = ∞ ЭВМ приостанавливает свою работу.

Деление чисел с плавающей запятой

X Mx * 2Пх

Y MY * 2Пy

ZX /Y Mz * 2Пz

1.Пz = Пx - Пy

2.Mz = Mx / My

Пример. (0,3*103) / (0,2*102) = (0,3 / 0,2) *103-2 = 1,5 * 101 = 0,15* 102

Особые случаи при делении чисел с плавающей запятой

1. Пz = Пx - Пy

1а. Если Пz = + ∞, то Z= ∞

1б. Если Пz = - ∞, то продолжить деление

2. Mz = Mx / My

Т.к. |Mx| ≥ 2-1, |My| ≥ 2-1, то 2 > |Mz| ≥ 2-1

Возможная область ненормализованной мантиссы: 2 > |Mz| ≥ 1

Если |Mz| ≥ 1, то выполнить нормализацию мантиссы с одновременной коррекцией порядка:

|Mz| = |Mz| * 2-1; Пz = Пz +1.

Если в результате получим Пz = + ∞, то Z = ∞. Если в ходе деления мантисс получили Пz = - ∞, и Пz = Пz +1 = - ∞, то Z = 0.

Если в ходе деления мантисс получили |Mz| < 1 , и при обработке порядков получили Пz = - ∞, то Z = 0.

Сложение/вычитание чисел

с плавающейX Mx * 2Пх запятой

Y MY * 2Пy

Z X Y Mz * 2Пz

Пример 1. (0,3*103) + (0,98*104) = (0,03 *104)+(0,98*104) = 1,01 * 104 = 0,101* 105

Пример 2. (0,3333*103) - (0,331*103) = 0,002*103 = = 0,2* 101

Z Y

Порядок выполнения и особые случаи при сложении/вычитании чисел с плавающей запятой

1. Определение разности порядков: ΔП = Пx – Пy

Если ΔП = + ∞, то Пx >> Пy, и Z = X. Если ΔП = - ∞, то Пy >> Пx, и

2.Денормализация мантиссы числа с меньшим порядком: Если ΔП > 0, то Пx > Пy, Пz =Пx, M′y = My*2-ΔП , M′x = Mx. Если ΔП < 0, то Пy > Пx, Пz =Пy, M′x = Mx*2-|ΔП| , M′y = My .

Если ΔП = 0, то Пz =Пx=Пy. Денормализации мантисс не происходит: M′x = Mx, M′y = My.

3.Алгебраическое суммирование чисел с равными порядками:

Mz = M′x M′y

Если |Мz| ≥ 1, то |M′z| =|Мz| * 2-1, П′z = Пz+1. Если П′z = + ∞, то Z = ∞.

Если 2-(k+1) ≤ |Мz| < 2-k, ( |Мz| = 0.00...0 1...), то |M′z| =|Мz| * 2k, П′z = Пz-k

k

Если П′z = - ∞, то Z = 0. нулей