Машинная арифметика. 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

Машинная арифметика. 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 Standardfor 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
  • 24.
  • 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
  • 30.
  • 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
  • 44.
  • 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
  • 52.
  • 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