SlideShare a Scribd company logo
Машинная арифметика. Cтандарт IEEE-754
Технологии и языки программирования
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
7 октября 2016 г.
Содержание
1 Запись десятичного числа в двоичной системе
2 Нормализованная и денормализованная форма
Десятичные числа
Двоичные числа
3 Стандарт IEEE-754
Нормализованная и денормализованная форма
Специальные значения
Предельные значения
4 Погрешности представления чисел
5 Особенности
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 2 / 42
Введение
Стандарт IEEE-754
IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std
754-1985)
Стандарт разработан в 1985 году ассоциацией IEEE (Institute of
Electrical and Electronics Engineers) и используется для
представления действительных чисел в двоичном коде.
Используется в микропроцессорах и программных средствах.
Особенности стандарта необходимо учитывать при программной
реализации численных алгоритмов.
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 3 / 42
Запись десятичного числа в двоичной системе
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
19/2 = 9 · 2 + 1
1 0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
19/2 = 9 · 2 + 1
9/2 = 4 · 2 + 1
1 1 0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
19/2 = 9 · 2 + 1
9/2 = 4 · 2 + 1
4/2 = 2 · 2 + 0
0 1 1 0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
19/2 = 9 · 2 + 1
9/2 = 4 · 2 + 1
4/2 = 2 · 2 + 0
2/2 = 1 · 2 + 0
1/2 = 0 · 2 + 1
0 0 1 1 0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Преобразование целых чисел
153/2 = 76 · 2 + 1
76/2 = 38 · 2 + 0
38/2 = 19 · 2 + 0
19/2 = 9 · 2 + 1
9/2 = 4 · 2 + 1
4/2 = 2 · 2 + 0
2/2 = 1 · 2 + 0
1/2 = 0 · 2 + 1
1 0 0 1 1 0 0 1
15310 = 100110012
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
Запись десятичного числа в двоичной системе
Обратное преобразование
1 0 0 1 1 0 0 1
·27
·26
·25
·24
·23
·22
·21
·20
27
+ 24
+ 23
+ 20
= 128 + 16 + 8 + 1 = 153
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 6 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
.0
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
.0 0
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
.0 0 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
.0 0 1 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
0.760 · 2 = 1.520
.0 0 1 1 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
0.760 · 2 = 1.520
0.520 · 2 = 1.040 .0 0 1 1 1 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
0.760 · 2 = 1.520
0.520 · 2 = 1.040
0.040 · 2 = 0.080
.0 0 1 1 1 1 0
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
0.760 · 2 = 1.520
0.520 · 2 = 1.040
0.040 · 2 = 0.080
0.080 · 2 = 0.160
.0 0 1 1 1 1 0 0
0.23510 ≈ 0.0011110002
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Преобразование дробных чисел
0.235 · 2 = 0.470
0.470 · 2 = 0.940
0.940 · 2 = 1.880
0.880 · 2 = 1.760
0.760 · 2 = 1.520
0.520 · 2 = 1.040
0.040 · 2 = 0.080
0.080 · 2 = 0.160
0.160 · 2 = 0.320
…
.0 0 1 1 1 1 0 0 0 . . .
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
Запись десятичного числа в двоичной системе
Обратное преобразование
.0 0 1 1 1 1 0 0 0
·2−1
·2−2
·2−3
·2−4
·2−5
·2−6
·2−7
·2−8
·2−9
2−3
+ 2−4
+ 2−5
+ 2−6
=
0.125 + 0.0625 + 0.03125 + 0.015625
= 0.234375 ≈ 0.235
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 8 / 42
Нормализованная и денормализованная форма
Нормализованная и денормализованная форма Десятичные числа
Запись числа в формате с плавающей точкой
Варианты записи числа 1251 в форме с плавающей точкой
1251 = 0.1251 × 104
= 1.2510 × 103
= 12.510 × 102
= 125.10 × 101
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 10 / 42
Нормализованная и денормализованная форма Десятичные числа
Нормализованная форма
Нормализованная десятичная форма числа 1251:
1251 = 1.251 × 103
Число состоит из двух частей:
мантисса: 1.251
показатель степени: +3
Модуль мантиссы нормализованного десятичного числа меньше 10
1 ≤ |M| < 10
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 11 / 42
Нормализованная и денормализованная форма Десятичные числа
Денормализованная форма
Денормализованная десятичная форма числа 1251
1251 = 0.1251 × 104
мантисса: 0.1251
показатель степени: +4
Модуль мантиссы денормализованного десятичного числа меньше 1
0 ≤ |M| < 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 12 / 42
Нормализованная и денормализованная форма Двоичные числа
Нормализованная форма
Нормализованная двоичная форма числа 12.125:
12.125 = 1100.0012 = 1.100001 · 23
мантисса: 1.100001
показатель степени: +3
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 13 / 42
Нормализованная и денормализованная форма Двоичные числа
Денормализованная форма
Денормализованная двоичная форма числа 12.125:
12.125 = 1100.0012 = 0.1100001 · 24
мантисса: 0.1100001
показатель степени: +4
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 14 / 42
Стандарт IEEE-754
Стандарт IEEE-754
Форматы чисел стандарта IEEE-754
числа одинарной точности
sinlge precision – 32 бита
числа двойной точности
double precision – 64 бита
числа расширенной одинарной точности
single extended precision – ≥ 43 бита
числа расширенной двойной точности
double extended precision – ≥ 79 бит
Для записи чисел используется форма с плавающей точкой.
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 16 / 42
Стандарт IEEE-754
Число одинарной точности (single precision)
S. Знак Es. Смещенный показатель M. Мантисса
1 бит 8 бит 23 бита
Для записи числа выделяется 4 байта:
1 1 старший бит — знак числа (0 или 1)
2 8 бит для смещенного на (28)/2 − 1 = 127 показателя степени
Es = E + 127
смещение позволяет не вводить знаковый бит показателя степени
3 23 бита для мантиссы без первой (старшей) единицы
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 17 / 42
Стандарт IEEE-754
Число одинарной точности
12.125 = 1.2125 · 101
= 1100.001 = 1.100001 · 23
Мантисса: 1.100001 (без первой единицы)
Показатель степени: 3
Смещённый показатель степени: 3 + 127 = 130 = 10000010
0 10000010 10000100000000000000000
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 18 / 42
Стандарт IEEE-754
Число двойной точности
Для записи числа выделяется 8 байт
Смещение: 211/2 − 1 = 1023.
Es = E + 1023
S. Знак Es. Смещенный показатель M. Мантисса
1 бит 11 бит 52 бит
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 19 / 42
Стандарт IEEE-754
Денормализованная форма для близких к 0 чисел
12.125 = 1.2125 · 101
= 1100.001 = 1.100001 · 23
Нормализованная форма записи не позволяет предcтавить ноль,
т.к. при восстановлении числа мантисса всегда дополняется
единицей:
0 10000010 10000100000000000000000
1.100001 · 210000010−1111111
Для записи нуля и близких к нулю чисел используется
денормализованная форма
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 20 / 42
Стандарт IEEE-754 Нормализованная и денормализованная форма
Нормализованное и денормализованное число
Нормализованное число
0/1 0 < Es < 11111...11 любое число
Знак Смещенный показатель Мантисса
Денормализованное число
0/1 0000...0000 не ноль
Знак Смещенный показатель Мантисса
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 21 / 42
Стандарт IEEE-754 Специальные значения
Ноль
“Положительный” ноль
0 0000...0000 0000...0000
Знак Смещенный показатель Мантисса
“Отрицательный” ноль
1 0000...0000 0000...0000
Знак Смещенный показатель Мантисса
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 22 / 42
Стандарт IEEE-754 Специальные значения
Специальные значения
Плюс бесконечность +∞
0 1111...1111 0000...0000
Знак Смещенный показатель Мантисса
Минус бесконечность −∞
1 1111...1111 0000...0000
Знак Смещенный показатель Мантисса
Не число (NaN)
0/1 1111...1111 не ноль
Знак Смещенный показатель Мантисса
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 23 / 42
Стандарт IEEE-754 Специальные значения
Формула восстановления нормализованного числа
F = (−1)s
2(Es−2(b−1)
+1) (1 + M/2n
)
b – количество бит, отводимых под показатель степени;
Es – смещенный показатель степени;
M – остаток мантиссы;
n – количество бит, отводимых под мантиссу.
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 24 / 42
Стандарт IEEE-754 Специальные значения
Формула восстановления нормализованного числа
single precision
F = (−1)s
2Es−127
(1 + M/223
)
double precision
F = (−1)s
2Es−1023
(1 + M/252
)
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 25 / 42
Стандарт IEEE-754 Специальные значения
Формула восстановления денормализованного числа
F = (−1)s
2(Es−2(b−1)
+2) (M/2n
)
b – количество бит, отводимых под показатель степени;
Es – смещенный показатель степени;
M – остаток мантиссы;
n – количество бит, отводимых под мантиссу.
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 26 / 42
Стандарт IEEE-754 Предельные значения
Предельные нормализованные числа (single)
Максимальное нормализованное число
смещённый показатель степени 1111 1110 = 255 - 1 = 254;
показатель степени 254 - 127 = 127;
мантисса 1.11111111111111111111111 = 2 − 223
(2 − 223
) · 2127
= 3.4028234663852886 · 1038
Минимальное нормализованное число
смещённый показатель степени 0000 0001 = 1;
показатель степени 1 - 127 = -126;
мантисса 1.000000000000000000000 = 1
1 · 2−126
= 1.1754943508222875 · 10−38
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 27 / 42
Стандарт IEEE-754 Предельные значения
Предельные денормализованные числа (single)
Максимальное денормализованное число
показатель степени -126;
мантисса 0.11111111111111111111111 = 1 − 2−23
(1 − 223
) · 2−126
= 1.1754942106924411 · 10−38
Минимальное денормализованное число
показатель степени = -126;
мантисса 0.000000000000000000001 = 2−23
2−23
· 2−126
= 1.401298464324817 · 10−45
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 28 / 42
Погрешности представления чисел
Погрешности представления чисел
Точность представления числа в стандарте IEEE-754
В ЭВМ представимы лишь конечный набор рациональных чисел.
Эти числа образуют представимое множество вычислительной
машины.
Для всех остальных чисел возможно лишь их приближенное
представление с ошибкой, которую принято называть ошибкой
представления (ошибкой округления).
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 30 / 42
Погрешности представления чисел
Пример непредставимого числа
Число 1/10 невозможно точно представить в двоичной системе
0.12 = 0.000110011001100110011 . . .
В десятичной системе подобным числом является 1/3
(
1
3
)
10
= 0.333333 . . .
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 31 / 42
Погрешности представления чисел
Точность представления числа в стандарте IEEE-754
Абсолютная максимальная ошибка для числа в формате IEEE-754
равна в пределе половине шага чисел.
Шаг чисел удваивается с увеличением показателя степени
двоичного числа на единицу.
Чем дальше от нуля, тем шире шаг чисел в формате IEEE754 по
числовой оси.
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 32 / 42
Погрешности представления чисел
Точность представления числа в стандарте IEEE-754
Предел максимальной абсолютной ошибки будет равен 1/2 шага
числа:
single : A(x∗) = 2Es−23−127/2 = 2(Es−151)
double : A(x∗) = 2Es−52−1023/2 = 2(Es−1076)
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 33 / 42
Погрешности представления чисел
Точность представления числа в стандарте IEEE-754
Относительная погрешность нормализованного числа
∆(x∗
) =
2E−151
2E−127
(
1 + M
223
) =
1
224 + 2M
Относительная погрешность денормализованного числа
∆(x∗
) =
2E−150
2E−126 M
223
=
1
2M
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 34 / 42
Погрешности представления чисел
Погрешность чисел одинарной точности
x∗ Абсолютная погрешность
2−149 ≈ 1.401298 × 10−45 2−150 ≈ 0.700649 × 10−45
2−148 ≈ 2.802597 × 10−45 2−150 ≈ 0.700649 × 10−45
1.0 2−23 ≈ 1.192 × 10−7
100 2−17 ≈ 7.6294 × 10−6
1.0 × 1010 210 ≈ 1.024 × 103
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 35 / 42
Погрешности представления чисел
Погрешность чисел двойной точности
x∗ Абсолютная погрешность
2−1074 ≈ 4.940656 × 10−324 2−1075 ≈ 2.470328 × 10−324
2−1073 ≈ 9.881313 × 10−324 2−1075 ≈ 2.470328 × 10−324
1.0 2−52 ≈ 2.220446 × 10−16
100 2−46 ≈ 1.421085 × 10−14
1.0 × 1010 2280 ≈ 1.942669 × 1084
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 36 / 42
Особенности
Особенности
Сложение и вычитание чисел
Значащих цифр в мантиссе двоичного числа в формате single
не более 24.
Если числа отличаются более чем в 223 (для single) и 252 (для
double), то операции сложения и вычитания между этими
числами невозможны.
300 =
1.00101100000000000000000 ×28
0.00001 =
0.00000000000000000000000010100111110001011011 ×28
300 + 0.00001 = 300
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 38 / 42
Особенности
x + 1 == x
1 x = 1.0
2 while ( x != x + 1) :
3 x = 2 * x
4
5 p r i n t ( x )
9 007 199 254 740 992.0
1 x = 1.0
2 while ( x != x + 0.001) :
3 x = 2 * x
4
5 p r i n t ( x )
17 592 186 044 416.0
(1020
+ 1) − 1020
= 0 ̸= (1020
− 1020
) + 1 = 1
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 39 / 42
Особенности
Сравнение чисел
1 a = 0.1
2 b = 0.1
3 b = b + 10
4 b = b − 10
5
6 a==b
7
8 False
9
10 a
11 0.1
12 b
13 0.09999999999999964
14
15 a−b
16 3.608224830031759e−16
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 40 / 42
Особенности
Округление
Округление, стремящееся к ближайшему целому* (округления до
чётного)
1 import numpy as np
2
3 np . round ( 1 2 . 5 )
4 12
5
6 np . round ( 1 3 . 5 )
7 14
Округление к нулю: 1.6 → 1, −1.6 → −1
Округление к большему: 1.6 → 2, −1.6 → −1
Округление к меньшему: 1.6 → 1, −1.6 → −2
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 41 / 42
Особенности
Источники
1 IEEE 754-2008
https://ru.wikipedia.org/wiki/IEEE_754-2008
2 Волков Е. А. Численные методы: Учебное пособие для вузов. 2-е
изд., испр. М.: Наука. 1987.
3 IEEE 754 - стандарт двоичной арифметики с плавающей точкой
http://www.softelectro.ru/ieee754.html
4 Что нужно знать про арифметику с плавающей запятой
https://habrahabr.ru/post/112953
Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 42 / 42

More Related Content

Similar to Машинная арифметика. Cтандарт IEEE-754

системы счисления
системы счислениясистемы счисления
системы счисления
Гимназия
 
якобовский - введение в параллельное программирование (3)
якобовский - введение в параллельное программирование (3)якобовский - введение в параллельное программирование (3)
якобовский - введение в параллельное программирование (3)Michael Karpov
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
Vasil Remeniuk
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
Tatyanazaxarova
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Andrey Karpov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Mikhail Kurnosov
 

Similar to Машинная арифметика. Cтандарт IEEE-754 (7)

системы счисления
системы счислениясистемы счисления
системы счисления
 
якобовский - введение в параллельное программирование (3)
якобовский - введение в параллельное программирование (3)якобовский - введение в параллельное программирование (3)
якобовский - введение в параллельное программирование (3)
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
лекция 11
лекция 11лекция 11
лекция 11
 

More from Theoretical mechanics department

Космический мусор
Космический мусорКосмический мусор
Космический мусор
Theoretical mechanics department
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы NumPy
Основы NumPyОсновы NumPy
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
Theoretical mechanics department
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
Theoretical mechanics department
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
Theoretical mechanics department
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
Theoretical mechanics department
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
Theoretical mechanics department
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
Theoretical mechanics department
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
Theoretical mechanics department
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Theoretical mechanics department
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
Theoretical mechanics department
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Theoretical mechanics department
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingTheoretical mechanics department
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
Theoretical mechanics department
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
Theoretical mechanics department
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
Theoretical mechanics department
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
Theoretical mechanics department
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
Theoretical mechanics department
 
Метод Кейна
Метод КейнаМетод Кейна
Метод Кейна
Theoretical mechanics department
 

More from Theoretical mechanics department (20)

Космический мусор
Космический мусорКосмический мусор
Космический мусор
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towing
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
 
Метод Кейна
Метод КейнаМетод Кейна
Метод Кейна
 

Машинная арифметика. Cтандарт IEEE-754

  • 1. Машинная арифметика. Cтандарт IEEE-754 Технологии и языки программирования Юдинцев В. В. Кафедра теоретической механики Самарский университет 7 октября 2016 г.
  • 2. Содержание 1 Запись десятичного числа в двоичной системе 2 Нормализованная и денормализованная форма Десятичные числа Двоичные числа 3 Стандарт IEEE-754 Нормализованная и денормализованная форма Специальные значения Предельные значения 4 Погрешности представления чисел 5 Особенности Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 2 / 42
  • 3. Введение Стандарт IEEE-754 IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) Стандарт разработан в 1985 году ассоциацией IEEE (Institute of Electrical and Electronics Engineers) и используется для представления действительных чисел в двоичном коде. Используется в микропроцессорах и программных средствах. Особенности стандарта необходимо учитывать при программной реализации численных алгоритмов. Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 3 / 42
  • 4. Запись десятичного числа в двоичной системе
  • 5. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 6. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 7. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 8. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 19/2 = 9 · 2 + 1 1 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 9. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 19/2 = 9 · 2 + 1 9/2 = 4 · 2 + 1 1 1 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 10. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 19/2 = 9 · 2 + 1 9/2 = 4 · 2 + 1 4/2 = 2 · 2 + 0 0 1 1 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 11. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 19/2 = 9 · 2 + 1 9/2 = 4 · 2 + 1 4/2 = 2 · 2 + 0 2/2 = 1 · 2 + 0 1/2 = 0 · 2 + 1 0 0 1 1 0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 12. Запись десятичного числа в двоичной системе Преобразование целых чисел 153/2 = 76 · 2 + 1 76/2 = 38 · 2 + 0 38/2 = 19 · 2 + 0 19/2 = 9 · 2 + 1 9/2 = 4 · 2 + 1 4/2 = 2 · 2 + 0 2/2 = 1 · 2 + 0 1/2 = 0 · 2 + 1 1 0 0 1 1 0 0 1 15310 = 100110012 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 5 / 42
  • 13. Запись десятичного числа в двоичной системе Обратное преобразование 1 0 0 1 1 0 0 1 ·27 ·26 ·25 ·24 ·23 ·22 ·21 ·20 27 + 24 + 23 + 20 = 128 + 16 + 8 + 1 = 153 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 6 / 42
  • 14. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 .0 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 15. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 .0 0 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 16. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 .0 0 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 17. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 .0 0 1 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 18. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 0.760 · 2 = 1.520 .0 0 1 1 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 19. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 0.760 · 2 = 1.520 0.520 · 2 = 1.040 .0 0 1 1 1 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 20. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 0.760 · 2 = 1.520 0.520 · 2 = 1.040 0.040 · 2 = 0.080 .0 0 1 1 1 1 0 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 21. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 0.760 · 2 = 1.520 0.520 · 2 = 1.040 0.040 · 2 = 0.080 0.080 · 2 = 0.160 .0 0 1 1 1 1 0 0 0.23510 ≈ 0.0011110002 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 22. Запись десятичного числа в двоичной системе Преобразование дробных чисел 0.235 · 2 = 0.470 0.470 · 2 = 0.940 0.940 · 2 = 1.880 0.880 · 2 = 1.760 0.760 · 2 = 1.520 0.520 · 2 = 1.040 0.040 · 2 = 0.080 0.080 · 2 = 0.160 0.160 · 2 = 0.320 … .0 0 1 1 1 1 0 0 0 . . . Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 7 / 42
  • 23. Запись десятичного числа в двоичной системе Обратное преобразование .0 0 1 1 1 1 0 0 0 ·2−1 ·2−2 ·2−3 ·2−4 ·2−5 ·2−6 ·2−7 ·2−8 ·2−9 2−3 + 2−4 + 2−5 + 2−6 = 0.125 + 0.0625 + 0.03125 + 0.015625 = 0.234375 ≈ 0.235 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 8 / 42
  • 25. Нормализованная и денормализованная форма Десятичные числа Запись числа в формате с плавающей точкой Варианты записи числа 1251 в форме с плавающей точкой 1251 = 0.1251 × 104 = 1.2510 × 103 = 12.510 × 102 = 125.10 × 101 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 10 / 42
  • 26. Нормализованная и денормализованная форма Десятичные числа Нормализованная форма Нормализованная десятичная форма числа 1251: 1251 = 1.251 × 103 Число состоит из двух частей: мантисса: 1.251 показатель степени: +3 Модуль мантиссы нормализованного десятичного числа меньше 10 1 ≤ |M| < 10 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 11 / 42
  • 27. Нормализованная и денормализованная форма Десятичные числа Денормализованная форма Денормализованная десятичная форма числа 1251 1251 = 0.1251 × 104 мантисса: 0.1251 показатель степени: +4 Модуль мантиссы денормализованного десятичного числа меньше 1 0 ≤ |M| < 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 12 / 42
  • 28. Нормализованная и денормализованная форма Двоичные числа Нормализованная форма Нормализованная двоичная форма числа 12.125: 12.125 = 1100.0012 = 1.100001 · 23 мантисса: 1.100001 показатель степени: +3 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 13 / 42
  • 29. Нормализованная и денормализованная форма Двоичные числа Денормализованная форма Денормализованная двоичная форма числа 12.125: 12.125 = 1100.0012 = 0.1100001 · 24 мантисса: 0.1100001 показатель степени: +4 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 14 / 42
  • 31. Стандарт IEEE-754 Форматы чисел стандарта IEEE-754 числа одинарной точности sinlge precision – 32 бита числа двойной точности double precision – 64 бита числа расширенной одинарной точности single extended precision – ≥ 43 бита числа расширенной двойной точности double extended precision – ≥ 79 бит Для записи чисел используется форма с плавающей точкой. Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 16 / 42
  • 32. Стандарт IEEE-754 Число одинарной точности (single precision) S. Знак Es. Смещенный показатель M. Мантисса 1 бит 8 бит 23 бита Для записи числа выделяется 4 байта: 1 1 старший бит — знак числа (0 или 1) 2 8 бит для смещенного на (28)/2 − 1 = 127 показателя степени Es = E + 127 смещение позволяет не вводить знаковый бит показателя степени 3 23 бита для мантиссы без первой (старшей) единицы Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 17 / 42
  • 33. Стандарт IEEE-754 Число одинарной точности 12.125 = 1.2125 · 101 = 1100.001 = 1.100001 · 23 Мантисса: 1.100001 (без первой единицы) Показатель степени: 3 Смещённый показатель степени: 3 + 127 = 130 = 10000010 0 10000010 10000100000000000000000 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 18 / 42
  • 34. Стандарт IEEE-754 Число двойной точности Для записи числа выделяется 8 байт Смещение: 211/2 − 1 = 1023. Es = E + 1023 S. Знак Es. Смещенный показатель M. Мантисса 1 бит 11 бит 52 бит Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 19 / 42
  • 35. Стандарт IEEE-754 Денормализованная форма для близких к 0 чисел 12.125 = 1.2125 · 101 = 1100.001 = 1.100001 · 23 Нормализованная форма записи не позволяет предcтавить ноль, т.к. при восстановлении числа мантисса всегда дополняется единицей: 0 10000010 10000100000000000000000 1.100001 · 210000010−1111111 Для записи нуля и близких к нулю чисел используется денормализованная форма Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 20 / 42
  • 36. Стандарт IEEE-754 Нормализованная и денормализованная форма Нормализованное и денормализованное число Нормализованное число 0/1 0 < Es < 11111...11 любое число Знак Смещенный показатель Мантисса Денормализованное число 0/1 0000...0000 не ноль Знак Смещенный показатель Мантисса Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 21 / 42
  • 37. Стандарт IEEE-754 Специальные значения Ноль “Положительный” ноль 0 0000...0000 0000...0000 Знак Смещенный показатель Мантисса “Отрицательный” ноль 1 0000...0000 0000...0000 Знак Смещенный показатель Мантисса Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 22 / 42
  • 38. Стандарт IEEE-754 Специальные значения Специальные значения Плюс бесконечность +∞ 0 1111...1111 0000...0000 Знак Смещенный показатель Мантисса Минус бесконечность −∞ 1 1111...1111 0000...0000 Знак Смещенный показатель Мантисса Не число (NaN) 0/1 1111...1111 не ноль Знак Смещенный показатель Мантисса Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 23 / 42
  • 39. Стандарт IEEE-754 Специальные значения Формула восстановления нормализованного числа F = (−1)s 2(Es−2(b−1) +1) (1 + M/2n ) b – количество бит, отводимых под показатель степени; Es – смещенный показатель степени; M – остаток мантиссы; n – количество бит, отводимых под мантиссу. Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 24 / 42
  • 40. Стандарт IEEE-754 Специальные значения Формула восстановления нормализованного числа single precision F = (−1)s 2Es−127 (1 + M/223 ) double precision F = (−1)s 2Es−1023 (1 + M/252 ) Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 25 / 42
  • 41. Стандарт IEEE-754 Специальные значения Формула восстановления денормализованного числа F = (−1)s 2(Es−2(b−1) +2) (M/2n ) b – количество бит, отводимых под показатель степени; Es – смещенный показатель степени; M – остаток мантиссы; n – количество бит, отводимых под мантиссу. Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 26 / 42
  • 42. Стандарт IEEE-754 Предельные значения Предельные нормализованные числа (single) Максимальное нормализованное число смещённый показатель степени 1111 1110 = 255 - 1 = 254; показатель степени 254 - 127 = 127; мантисса 1.11111111111111111111111 = 2 − 223 (2 − 223 ) · 2127 = 3.4028234663852886 · 1038 Минимальное нормализованное число смещённый показатель степени 0000 0001 = 1; показатель степени 1 - 127 = -126; мантисса 1.000000000000000000000 = 1 1 · 2−126 = 1.1754943508222875 · 10−38 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 27 / 42
  • 43. Стандарт IEEE-754 Предельные значения Предельные денормализованные числа (single) Максимальное денормализованное число показатель степени -126; мантисса 0.11111111111111111111111 = 1 − 2−23 (1 − 223 ) · 2−126 = 1.1754942106924411 · 10−38 Минимальное денормализованное число показатель степени = -126; мантисса 0.000000000000000000001 = 2−23 2−23 · 2−126 = 1.401298464324817 · 10−45 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 28 / 42
  • 45. Погрешности представления чисел Точность представления числа в стандарте IEEE-754 В ЭВМ представимы лишь конечный набор рациональных чисел. Эти числа образуют представимое множество вычислительной машины. Для всех остальных чисел возможно лишь их приближенное представление с ошибкой, которую принято называть ошибкой представления (ошибкой округления). Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 30 / 42
  • 46. Погрешности представления чисел Пример непредставимого числа Число 1/10 невозможно точно представить в двоичной системе 0.12 = 0.000110011001100110011 . . . В десятичной системе подобным числом является 1/3 ( 1 3 ) 10 = 0.333333 . . . Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 31 / 42
  • 47. Погрешности представления чисел Точность представления числа в стандарте IEEE-754 Абсолютная максимальная ошибка для числа в формате IEEE-754 равна в пределе половине шага чисел. Шаг чисел удваивается с увеличением показателя степени двоичного числа на единицу. Чем дальше от нуля, тем шире шаг чисел в формате IEEE754 по числовой оси. Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 32 / 42
  • 48. Погрешности представления чисел Точность представления числа в стандарте IEEE-754 Предел максимальной абсолютной ошибки будет равен 1/2 шага числа: single : A(x∗) = 2Es−23−127/2 = 2(Es−151) double : A(x∗) = 2Es−52−1023/2 = 2(Es−1076) Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 33 / 42
  • 49. Погрешности представления чисел Точность представления числа в стандарте IEEE-754 Относительная погрешность нормализованного числа ∆(x∗ ) = 2E−151 2E−127 ( 1 + M 223 ) = 1 224 + 2M Относительная погрешность денормализованного числа ∆(x∗ ) = 2E−150 2E−126 M 223 = 1 2M Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 34 / 42
  • 50. Погрешности представления чисел Погрешность чисел одинарной точности x∗ Абсолютная погрешность 2−149 ≈ 1.401298 × 10−45 2−150 ≈ 0.700649 × 10−45 2−148 ≈ 2.802597 × 10−45 2−150 ≈ 0.700649 × 10−45 1.0 2−23 ≈ 1.192 × 10−7 100 2−17 ≈ 7.6294 × 10−6 1.0 × 1010 210 ≈ 1.024 × 103 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 35 / 42
  • 51. Погрешности представления чисел Погрешность чисел двойной точности x∗ Абсолютная погрешность 2−1074 ≈ 4.940656 × 10−324 2−1075 ≈ 2.470328 × 10−324 2−1073 ≈ 9.881313 × 10−324 2−1075 ≈ 2.470328 × 10−324 1.0 2−52 ≈ 2.220446 × 10−16 100 2−46 ≈ 1.421085 × 10−14 1.0 × 1010 2280 ≈ 1.942669 × 1084 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 36 / 42
  • 53. Особенности Сложение и вычитание чисел Значащих цифр в мантиссе двоичного числа в формате single не более 24. Если числа отличаются более чем в 223 (для single) и 252 (для double), то операции сложения и вычитания между этими числами невозможны. 300 = 1.00101100000000000000000 ×28 0.00001 = 0.00000000000000000000000010100111110001011011 ×28 300 + 0.00001 = 300 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 38 / 42
  • 54. Особенности x + 1 == x 1 x = 1.0 2 while ( x != x + 1) : 3 x = 2 * x 4 5 p r i n t ( x ) 9 007 199 254 740 992.0 1 x = 1.0 2 while ( x != x + 0.001) : 3 x = 2 * x 4 5 p r i n t ( x ) 17 592 186 044 416.0 (1020 + 1) − 1020 = 0 ̸= (1020 − 1020 ) + 1 = 1 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 39 / 42
  • 55. Особенности Сравнение чисел 1 a = 0.1 2 b = 0.1 3 b = b + 10 4 b = b − 10 5 6 a==b 7 8 False 9 10 a 11 0.1 12 b 13 0.09999999999999964 14 15 a−b 16 3.608224830031759e−16 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 40 / 42
  • 56. Особенности Округление Округление, стремящееся к ближайшему целому* (округления до чётного) 1 import numpy as np 2 3 np . round ( 1 2 . 5 ) 4 12 5 6 np . round ( 1 3 . 5 ) 7 14 Округление к нулю: 1.6 → 1, −1.6 → −1 Округление к большему: 1.6 → 2, −1.6 → −1 Округление к меньшему: 1.6 → 1, −1.6 → −2 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 41 / 42
  • 57. Особенности Источники 1 IEEE 754-2008 https://ru.wikipedia.org/wiki/IEEE_754-2008 2 Волков Е. А. Численные методы: Учебное пособие для вузов. 2-е изд., испр. М.: Наука. 1987. 3 IEEE 754 - стандарт двоичной арифметики с плавающей точкой http://www.softelectro.ru/ieee754.html 4 Что нужно знать про арифметику с плавающей запятой https://habrahabr.ru/post/112953 Кафедра теоретической механики Машинная арифметика. Cтандарт IEEE-754 42 / 42