
- •ДЕЙСТВИЯ НАД ЧИСЛАМИ
- •ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
- •ДИАПАЗОН ПРЕДСТАВЛЕНИЯ В ЭВМ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
- •ПОГРЕШНОСТИ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
- •Умножение чисел с плавающей запятой
- •Особые случаи при умножении чисел с плавающей запятой
- •Деление чисел с плавающей запятой
- •Особые случаи при делении чисел с плавающей запятой
- •Сложение/вычитание чисел
- •Порядок выполнения и особые случаи при сложении/вычитании чисел с плавающей запятой
ДЕЙСТВИЯ НАД ЧИСЛАМИ
С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
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 -1≈ 2 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

Порядок выполнения и особые случаи при сложении/вычитании чисел с плавающей запятой
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. нулей