Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемНиколай Штыров
1 Практическое занятие Ввод-вывод информации (дополнительный материал) Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Дисциплины "ЯЗЫКИ ПРОГРАММИРОВАНИЯ" "ПРОГРАММИРОВАНИЕ"
2 Вещественные числа В памяти ЭВМ не предусмотрено специальных средств для запоминания десятичной точки. Существует два способа представить вещественное число в виде десятичной дроби: 1. Явно указав позицию запятой внутри числа: , ; 2. Научный, с помощью степени основания 10: *10 1, 0.98* © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
3 Вещественные числа с фиксированной точкой Данное представление соответствует первому варианту записи вещественных чисел. Положение точки внутри байта (байтов) задается фиксировано, например: для хранения используется 1 байт, пусть биты с 0 по 4 – целая часть, а биты с 5 по 7 – дробная часть: © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
4 Вещественные числа с фиксированной точкой (недостатки) 1) Малый диапазон значений. 2) Неэффективное использование памяти при работе только с малыми числами или только с большими числами. 4 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
5 Вещественные числа с плавающей точкой p-разрядным числом с плавающей точкой по основанию b с избытком q называется пара величин (e, f), которой соответствует значение: ( e, f ) = f b (e – q) e – порядок – беззнаковое целое число, изменяющаяся в определенном промежутке. f – мантисса – знаковое вещественное число с фиксированной точкой, при этом: | f | < 1, т.е. разделяющая точка находится в крайней слева позиции 5 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
6 Научная форма записи вещественных чисел Научная форма записи вещественных чисел позволяет представить одно и то же число множеством различных способов. Например, постоянная Планка h = может быть записана одним из следующих способов: 1) ) ) ) )… 6 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
7 Нормализованная форма Представление информации в ЭВМ требует определенности, поэтому вещественные числа представляются в нормализованной форме. Число с плавающей точкой является нормализованным, если: 1) наиболее значимая цифра в представлении f отлична от нуля: 1/b | f | < 1 2) f = 0 и е принимает наименьшее возможное значение Например: 0.615, 0.101, 6.15, © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
8 p-разрядные нормализованные вещественные числа ( e, f ) = f b e-q В ЭВМ для хранения вещественных чисел отводится ограниченное число разрядов: –b p f b e-q b p Пример: рассмотрим следующий пример представления десятичных чисел: f – 8-разрядов, е – 2 разряда, избыток q = 50, основание b = 10. Число Авогадро: N = 6, = = ((24+50), ) = (74, ) Постоян. Планка: h = = = ((-26+50), ) = (24, ) 8 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
9 Упаковка вещественных числа с одинарной точностью (тип float) 9 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 0 Размер, выделяемый для хранения: 4 байта (32 бита) (e, f,s) = s1.f b e-q f: 23 бит; e: 8 бит; s: 1 бит, b = 2, q = – 1 = fes
10 Примеры вещественных чисел с одинарной точностью 10 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление1 Двоичное представление Результат упаковки (hex)3f Двоичное представление f0 e =7F 16 = s0 (~ "+" ) ( 127, 0,0) = = + 1.0
11 Примеры вещественных чисел с одинарной точностью (2) 11 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление-1 Двоичное представление Результат упаковки (hex)bf Двоичное представление f0 e =7F 16 = s1 (~ "–" ) ( 127, 0,1) = – = – 1.0
12 Примеры вещественных чисел с одинарной точностью (3) 12 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление0.5 Двоичное представление = Результат упаковки (hex)3f Двоичное представление f0 e =7E 16 = s0 (~ "+" ) ( 126, 0,0) = = +0.5
13 Примеры вещественных чисел с одинарной точностью (4) 13 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление Двоичное представление = Результат упаковки (hex)3d Двоичное представление f0 e =7B 16 = s0 (~ "+" ) ( 127, 0,0) = = =
14 Перевод вещественных чисел из десятичной СС в двоичную СС 14 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Пусть дано десятичное вещественное число A 10 = A' 10. A'' 10 Необходимо: найти A 2 Решение: 1.Найти A' 2 из A' 10, используя алгоритм DB 1 перевода целых десятичных чисел в двоичные. 2.Найти A'' 2 из A'' 10, используя алгоритм DB 2 перевода дробных (
15 Алгоритм DB 1 15 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» n 10 i = 0, n 2 = 0, m = n 10 НАЧАЛО m > 0 n 2 = n 2 + (m mod 2) 0 делать n 2 = n 2 + (m mod 2)
16 Алгоритм DB 2 16 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» n 10 i = 0, n 2 = 0, m = n 10 НАЧАЛО m > 0 n 2 = n 2 0 делать n 2 = n 2
17 Представление числа © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» n 10 i = 0, n 2 = 0, m = n 10 НАЧАЛО m > 0 n 2 = n 2
18 Примеры вещественных чисел с одинарной точностью (5) 18 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление0.3 Двоичное представление … Результат упаковки (hex)3e a Двоичное представление f e =7D 16 = s0 (~ "+" ) ( 127, 0,0) = … = … 2 -2 = ….
19 Примеры вещественных чисел с одинарной точностью (6) 19 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление5.3 Двоичное представление … Результат упаковки (hex)40 a9 99 9a Двоичное представление f e =81 16 = s0 (~ "+" ) ( 127, 0,0) = … = … 2 2 = ….
20 Анализ внутреннего представления числа в типе float 20 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» = = = = , , , , , , , , , = = 5, , = 5,
21 Примеры вещественных чисел с одинарной точностью (7) 21 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление5.1 Двоичное представление = … Результат упаковки (hex)40 a Двоичное представление f e =81 16 = s0 (~ "+" ) ( 127, 0,0) = … = … 2 2 = ….
22 Анализ внутреннего представления числа в типе float 22 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» = = = = 5 + 0, , , , , , , , , , = 5,
23 Ошибки округления 23 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Технические средства не позволяют хранить числа, заданные бесконечными дробями Необходима замена любого числа конечной дробью, ограниченной доступным количеством разрядов. Данная операция называется округлением. Округлением числа x = ±d n …d s+1 d s d s–1 d s–2 до s разрядов в заданной СС называется его замена числом x s = ±d n …d s+1 d s, в котором разряды (s – 1), (s – 2), … являются нулевыми. Разность (x – x s ) называется ошибкой округления.
24 Способы округления 24 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1.Отбрасывание разрядов (s – 1), (s – 2),… как это реализовано для целых чисел. Достоинством данного подходя является простота реализации в аппаратуре. Недостатком служит то, что знак ошибки (x * x) всегда противоположен знаку x. 2.Округление по правилам, используемым в школе. Вещественные числа X i s, имеющие нулевые младшие разряды (s – 1), (s – 2), … располагаются на числовой оси с шагом b s, как показано на рисунке. При этом среди этих чисел есть число x *, которое наиболее близко к x и | x * x | b s X3sX3s X2sX2s X0sX0s X1sX1s X -1 s X -2 s x x*x* X -3 s …… b = 2, s = -2:
25 Примеры применения алгоритмов округления для числа © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Отбрасывание разрядов: 5.3 = = 5, = 5, , ,3 = 2.86 · Округление с использованием школьной арифметики 5.3 = = = = 5, = 5, , – 5,3 = 1.91 · 10 -7
26 Примеры применения алгоритмов округления для числа © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Отбрасывание разрядов: 5.1 = = 5, , ,1 = 0.95 · Округление с использованием школьной арифметики 5.1 = = 5, , ,1 = 0.95 · 10 -7
27 Машинный ноль 27 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ( e, f,s) = s1.f b e-q Десятичное представление0 Двоичное представление0 Результат упаковки (hex)00 00 Двоичное представление f e = = 0 10 s0 (~ "+" ) ( 0, 0,0) = … = … =
28 Машинный ноль 28 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Число ω, для которого f = 0, мантисса m = 1.0, а порядок e принимает наименьшее значение (для float e = 0 => (e – q)= – 127) называется машинным нулем. Оно совпадает с минимальным положительным числом, которое может быть представлено числом с плавающей точкой при заданных размерностях f и e (для float размерность f – 23 бита, e – 8 бит). Любое число x < ω рассматривается как 0.
29 Погрешности измерений 29 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Абсолютная погрешность (Δх) разность между приближенным значением некоторой величины и ее точным значением: Δх = | x п – x т |, где x т – точное значение, а x п – приближенное. Относительная погрешность (δx) – погрешность измерения, выраженная отношением абсолютной погрешности измерения к действительному или измеренному значению измеряемой величины: δx = Δх/x п, δx = Δх/x т. δx является безразмерной величиной
30 Погрешность представления вещественных чисел 30 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» В отличие от чисел с фиксированной точкой, сетка чисел, которые способна отобразить арифметика с плавающей точкой, неравномерна: она более густая для чисел с малыми порядками и более редкая для чисел с большими порядками. Для чисел с фиксированной точкой постоянным является порядок абсолютной погрешности. Для чисел с плавающей точкой постоянным является порядок относительной погрешности.
31 Погрешности вещественных чисел с фиксированной точкой 31 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Рассмотрим 2-хразрядные числа с фиксированной точкой, один разряд отводится под целую часть, второй – под дробную. x 0.0 … … Δх 1 = | x п – x т | = | – 0.1 | = 0.023, порядок Δх 2 = | x п – x т | = | – 1.1 | = 0.023, порядок δx 1 = Δх/x п = 0.023/ , порядок δx 2 = Δх/x п = 0.023/ ,020, порядок 10 -2
32 Погрешности вещественных чисел с плавающей точкой 32 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Рассмотрим 2-хразрядные числа с плавающей точкой, один разряд отводится под мантиссу, второй – под порядок. x 0.0 … 0.1· · · · · · · ·10 9 Δх 1 = | x п – x т | = 0.023·10 -9, порядок Δх 2 = | x п – x т | = 0.023·10 9, порядок δx 1 = Δх/x п = 0.023·10 -9 / 0.123· , порядок δx 2 = Δх/x п = 0.023·10 9 / 0.123· , порядок 10 -1
33 Машинный эпсилон 33 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Машинным эпсилоном называется наименьшее положительное число ε такое, что 1 ε 1, где машинное сложение. Пример: Пусть даны два числа: a и b = a + γ. Если γ < a·ε, то с точки зрения машины a = b. a < a·(1 γ) < a·(1 ε) 1 γ = 1
34 Программа поиска машинного эпсилона 34 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» #include int main() { float e,e1; int k=0; e=1.0; do { e=e/2.0; e1=e+1.0; k++; } while (e1>1.0); printf("Число делений на 2: %d\n",k); printf("Машинный эпсилон: %e\n",e); return 0; } Результаты работы: Число делений на 2: 24 Машинный эпсилон: e-08
35 Алгоритм сложения чисел с плавающей точкой (по Д. Кнуту) 35 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Задача: найти число ω = υ ν а : (2p + 1) разрядный аккумулятор 1ввод υ, ν 2 распаковать υ (e υ, ± f υ ) и ν (e ν, ± f ν ) 3 если e ν > e υ то υ ν (e ν e υ и f υ f ν ) конец если 4e ω = e υ 5 если (e υ e ν ) p + 2 то f ω = f υ 6иначе 7сдвиг f ν >> (e υ e ν ) => a = f ν /b (e υ e ν ) 8a = f υ + a, f ω = окр(a, p) 9конец если 10 нормализация (e ω, ± f ω ) и упаковка (e ω, ± f ω ) ω
36 Обоснование проверки условия (e υ e ν ) p © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Пусть рассматриваются 4-хразрядные вещественные числа: 1) υ = 0,1000·10 5, ν 1 = + 0,9999·10 0, e υ e ν = 5 = p + 1) 0, , , = 0,1000·10 5 2) υ = 0,1000·10 5, ν 1 = 0,9999·10 0, e υ e ν = 5 = p + 1) 0, , , = 0,9999·10 4 2) υ = 0,1000·10 5, ν 1 = 0,9999·10 -1, e υ e ν = 6 = p + 2) 0, , , = 0,1000·10 5 +
37 Алгоритм нормализации чисел с плавающей точкой (по Д. Кнуту) 37 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Задача: обеспечить для числа ω = (e ω, ± f ω ), f ω < b выполнение условия: 1/b | f ω | < 1 1ввод ω 2 распаковать ω (e, ± f) 3если f = 0 то e = 4иначе 5 пока f 1/b делать f = f · b, e = e 1 конец пока 6 делать 7 если | f | 1 то f = f / b, e = e + 1 конец если 8 округлить f до p разрядов 9 пока | f | 1 10 если e > e max то переполнение порядка конец если 11 если e < e min то исчезновение порядка конец если 12 конец если ; упаковать (e, ± f) ω почему?
38 Вспомогательные программы 38 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1. Скачайте со страницы предмета архив со вспомогательными программами: float_internals.tar.bz2 2. Для распаковки выполните команду: tar -xjvf float_internals.tar.bz2 в директории, где находится архивный файл. 3. Для компиляции программ перейдите в появившуюся директорию float_internals и выполните команду make. 4. Будут скомпилированы следующие исполняемые файлы: convert10_2 – осуществляет перевод дробного десятичного числа в двоичное с заданной точностью: $./convert10_2 Input float number: 0.3 Digits after ".": 40 int=0, fr=
39 Вспомогательные программы 39 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» float_internals – производит распаковку типа float и распечатывает его содержимое. Используемые обозначения (f, e) совпадают теми, которые использовались в данном справочном материале: $./float_internals Input floating point number: 0.3 Internal representation (highest byte first): 3e a f: hex= a, mantissa= e: hex=7d, bin= , desimal=125, order=-2 sign = 0 floating point representation =
40 ЛИТЕРАТУРА 40 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1)Кнут, Д.Э. Искусство программирования. Том 2. Получисленные алгоритмы. – Вильямс, Addison Wesley Longman, – 500 с. – (Серия: Искусство программирования). – ISBN )Воеводин, В.В. Вычислительная математика и структура алгоритмов. – М.: Изд-во МГУ, – 112 с. – ISBN )Вылиток, А.А. Представление чисел в ЭВМ cmcmsu.no-ip.info/download/pc.number.representation.pdf 4)Википедия, стандарт IEEE года 5)Википедия, стандарт IEEE г.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.