Презентация решение.pptx
- Количество слайдов: 29
Задача 1. Задание Существуют различные способы представления числовых данных в компьютере: несколько форматов целых (со знаком и без), несколько форматов дробных (с плавающей запятой), двоично-десятичное представление, и др. Требуется выбрать формат представления данных для программирования (при условии экономии памяти для хранения данных): А) вычислений без погрешностей, Б) операций считывания и обработки информации с датчиков управляемого объекта, В) решения системы уравнений с малой погрешностью (не меньше 10 -7), Г) сбор статистических данных о численности людей разных возрастных категорий в городе. Какие типы данных вы выберете для вычислений в случаях А, Б, В, Г? Поясните свой выбор.
Задача 1. Решение А) вычислений без погрешностей Рассмотрим достоинства и недостатки каждого из способов представления данных
ЦЕЛЫЕ ДВОИЧНЫЕ ЧИСЛА (БЕЗ ЗНАКА) Если на число отводится n бит, то диапазон представимых чисел будет [0; 2 n− 1] n= 8, 16, 32, 64, … Количество байт Количество разрядов Диапазон представимых чисел unsigned byte integer 1 8 [0; 28− 1] или 0 ÷ 255 unsigned word integer 2 16 [0; 216− 1] unsigned doubleword integer 4 32 [0; 232− 1] unsigned quadword integer 8 64 [0; 264− 1] Название формата Форматы некоторых беззнаковых чисел
ЦЕЛЫЕ ДВОИЧНЫЕ ЧИСЛА Основная сложность работы с целыми числами – возможное переполнение разрядной сетки. Например (беззнаковые числа): А = 25510 = 11112= FF 16. В = 25510 = 11112= FF 16. Но после операции сложения MOV AL, 255 ADD AL, 255 имеем неверный результат: Должны получить: А+В=1 FE (510)
Задача 1. Решение А) вычислений без погрешностей А. 1. Целое без знака не подходит, т. к. • при вычислениях могут возникнуть и отрицательные числа, • нельзя произвести вычисления с дробными числами, • ограничен диапазон представимых значений при максимальной разрядности в 8 байт (в 64 -разрядных ВС) составляет 0÷ 264 • основная ошибка (погрешность) переполнение разрядной сетки при получении результата, превышающего диапазон
ЦЕЛЫЕ ДВОИЧНЫЕ ЧИСЛА СО ЗНАКОМ Количество байт Количество разрядов Диапазон представимых чисел signed byte integer 1 8 [− 27; 27− 1] или [− 128; +127] signed word integer 2 16 signed doubleword integer 4 32 [− 215; 215− 1] [− 231; 231− 1] signed quadword integer 8 64 [− 263; 263− 1] Название формата
ЦЕЛЫЕ ДВОИЧНЫЕ ЧИСЛА Основная сложность работы с целыми числами – возможное переполнение разрядной сетки. Например (знаковые числа): А = – 12810 = 1000 00002= 8016. В = – 810 = 1111 10002= F 816. Но после операции сложения MOV AL, – 128 ADD AL, – 8 имеем неверный результат: Должны получить: А+В=17816 (– 13610)
Задача 1. Решение А) вычислений без погрешностей А. 2. Целое со знаком не подходит, т. к. • нельзя произвести вычисления с дробными числами, • ограничен диапазон представимых значений при максимальной разрядности в 8 байт (в 64 -разрядных ВС) составляет – 263÷+263 • основная ошибка (погрешность) переполнение разрядной сетки при получении результата, превышающего диапазон
ДРОБНЫЕ ЧИСЛА В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ (ЧПЗ) или FLOAT Число = ± Мантисса × 2 ±порядок Каждая ячейка памяти с числом соответствующего типа в бинарном виде содержит (последовательно): • 1 бит знака (s), • p бит, выделяемых на хранение порядка числа, • m бит для хранения мантиссы. знак 1 бит порядок мантисса p бит m бит
СТАНДАРТЫ ПРЕДСТАВЛЕНИЯ ЧПЗ В КОМПЬЮТЕРЕ IEEE 754 -2008 http: //ali. ayad. free. fr/IEEE_2008. pdf Тип данных Размер (байт) Точность s знак Разрядность (бит) р m порядок мантисса всего binary 16 2 половинная 1 5 10 16 binary 32 (float) 4 одинарная 1 8 23 32 binary 64 (double) 8 двойная 1 11 52 64 10 расширенная 1 15 64 80 16 учетверённая 1 15 112 128 Не стандартизованный формат Intel binary 128 (long double)
ДИАПАЗОНЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ Числа с плавающей запятой одинарной точности могут хранить значение в диапазоне Для чисел с половинной точностью: [– 65504; – 5. 96∙ 10− 8] U [5. 96∙ 10− 8; 65504]. Для чисел с двойной точностью: [– 1, 8∙ 10308; – 2, 2∙ 10– 308] U [2, 2∙ 10– 308; 1, 8∙ 10308]. Для чисел с расшир. точностью: [– 1, 18∙ 104932; – 3, 37∙ 10 -4932] U [3. 37·10– 4932; 1, 18 ∙ 104932]. …
ТОЧНОСТЬ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В КОМПЬЮТЕРЕ Все целые числа представлены без погрешности. Для действительных чисел: • вычислительная погрешность • необходимость перевода дробей из десятичной системы счисления в двоичную. ⅕=0, 2. Двоичное представление: 4 разрядами после запятой - 0. 00112, что соответствует десятичному числу 0. 187510 8 разрядами - 0. 00112, что соответствует десятичному числу 0. 1992187510 12 разрядами - 0. 001100112, что соответствует десятичному числу 0. 19995117187510 28 разрядами - 0. 00110011001100112, что соответствует 0. 199992549410 Отсюда видим, что точность представления повышается с увеличением разрядной сетки. Кроме того, в формате ЧПЗ не могут быть представлены как очень большие числа, так и очень маленькие.
Задача 1. Решение А) вычислений без погрешностей А. 3. Формат с плавающей запятой (точкой) не подходит, т. к. • хотя диапазон представимых значений достаточно большой, но все дробные числа за редким исключением представляются с погрешностью и для точных расчетов не подходят
ДВОИЧНО-ДЕСЯТИЧНЫЕ ДАННЫЕ Позволяют оперировать любыми типами и размерами чисел без погрешности (т. к. это формат представления не целого числа, а лишь одного десятичного разряда). Необходимое количество десятичных разрядов определяет пользователь при написании кода программы, т. е. он сам выбирает точность представления. ; ------------------------. data A DB 07 H, 09 h, 04 H ; неупакованное BCD-число 497 B DB 16 H, 05 H ; упакованное BCD-число 516 ; ------------------------
ДВОИЧНО-ДЕСЯТИЧНЫЕ ДАННЫЕ Неупакованное BCD-число.
ДВОИЧНО-ДЕСЯТИЧНЫЕ ДАННЫЕ Упакованное BCD-число.
Задача 1. Решение А) вычислений без погрешностей А. 4. Формат подходит BCD двоично-десятичное представление • вычисление без погрешностей – ДА • возможность задания любого размера числа – ДА • возможность самостоятельно программно определить знак числа и положение запятой – ДА • из двух форматов больше подходит упакованный, т. к. он позволяет в два раза сократить занимаемую числом область памяти
Задача 1. Решение А) вычислений без погрешностей Решение: Формат BCD двоично-десятичного представления
Задача 1. Решение Б) операций считывания и обработки информации с датчиков управляемого объекта Решение Сложный формат ЧПЗ, вектора, BCD не нужен Приемлем формат целого двоичного числа без знака, т. к. информация с датчиков представляет собой набор кодов сигналов – двоичных цифр, знак не требуется, дробная часть не нужна, самый экономный размер двоичного числа – byte unsigned integer (1 байт без знака).
Задача 1. Решение В) решения системы уравнений с малой погрешностью (не больше 10 -7) Решение Из-за возможных дробных решений можно сравнить три формата • ЧПЗ (float), • BCD, • Вектора (sse/avx), Сложно программируемый формат BCD не нужен, т. к. оговорена возможность наличия погрешности. Приемлем формат данных ЧПЗ (float) и векторных ЧПЗ. Среди размерности чисел следует выбрать (при условии экономии памяти) наименьший формат, дающий допустимую погрешность. точность представления числа (количество верных десятичных знаков после запятой) : Binary 32: log 10 (мантиссы) = log 10 (223)=6, 92 ≈ 7 Binary 64: log 10 (252)=15, 65 ≈ 16 Binary 128: log 10 (2112)=33, 7 ≈ 34 … более высокой точности не требуется.
Задача 1. Решение Г) сбор статистических данных о численности людей разных возрастных категорий в городе. Решение • ЧПЗ (float) – не нужен, т. к. число целое, • Сложно программируемый формат BCD не нужен, • формат Вектора (sse/avx) при ограниченном наборе операций с ним не нужен, • Приемлем формат целого беззнакового числа Среди размерности чисел следует выбрать (при условии экономии памяти) наименьший формат, позволяющий задать максимально число жителей города. Самый большой город мира по численности населения — это Токио. В столице Японии проживает 34, 5 миллиона человек. Сравним с диапазонами: Количество байт Количество разрядов Диапазон представимых чисел unsigned byte integer 1 8 0 ÷ 255 unsigned word integer 2 16 unsigned doubleword integer 4 32 0 ÷ 65 536 0 ÷ 4 294 967 296 unsigned quadword integer 8 64 1, 8× 1019 Название формата
Задача 2. Задание Установите последовательность в порядке возрастания следующих дробных чисел в формате ЧПЗ одинарной точности, расположенные по адресам (см. рис. ниже): А 1 по адресу 00402000, А 2 по адресу 00402004, А 3 по адресу 00402014.
Задача 2. Задание Установите последовательность в порядке возрастания следующих дробных чисел в формате ЧПЗ одинарной точности, расположенные по адресам (см. рис. ниже): А 1 по адресу 00402000, А 2 по адресу 00402004, А 3 по адресу 00402014. по адресу 00402000 расположены 4 байта кода числа А 1 – 00 00, по адресу 00402004 расположены 4 байта кода числа А 2 – 5 F 70 09 B 0, по адресу 00402014 расположены 4 байта кода числа А 3– 05 FC FD 02
Побайтное хранение кодов Размер стандартных машинных элементов данных кратен степеням двойки: • 1 байт 20 байт = 8 бит • 2 байта – слово 21 байт = 16 бит • 4 байта – двойное слово 22 байт = 32 бит • 8 байт – учетверённое слово 23 байт = 64 бит • … 00 F 0 0 F FF
Основные размеры данных
СПОСОБЫ ХРАНЕНИЯ МНОГОБАЙТОВЫХ ЭЛЕМЕНТОВ ДАННЫХ В ПАМЯТИ КОМПЬЮТЕРА Прямой: от старшего к младшему IBM, Motorola, SPARC Обратный: от младшего к старшему Intel Порядок следования байтов числа в памяти
Задача 2. Решение архитектура «Little Endian» правильная привычная нам запись заданных чисел будет следующая: А 1 = 00 00, А 2 = B 0 09 70 5 F, А 3 = 02 FD FC 05.
Задача 2. Решение архитектура «Little Endian» А 1 = 00 00, А 2 = B 0 09 70 5 F, А 3 = 02 FD FC 05. Знак числа для А 1 цифра 016 = 00002, число А 1 – положительный ноль для А 2 цифра В 16= 10112, число А 2 – отрицательное для А 3 цифра 016 = 00002, число А 3 – положительное и не равно нулю. Следовательно, верен следующий порядок чисел по возрастанию: A 2, A 1, A 3
Задача 2. Решение архитектура «Big Endian» А 1 = 00 00, А 2 = 5 F 70 09 B 0, А 3 = 05 FC FD 02. Знак числа для А 1 цифра 016 = 00002, число А 1 – положительный ноль для А 2 цифра 516= 01012, число А 2 – положительное и не равно нулю для А 3 цифра 016 = 00002, число А 3 – положительное и не равно нулю. Следовательно, для сравнения А 2 и А 3 надо установить содержимое других полей числа (порядок, мантисса). Больше то, где больше порядок, и если порядки равны, сравнить мантиссы. А 2: 01011111 0111000 0001001 1011000 А 3: 00000101 11111100 11111101 00000010 Порядок А 2 > порядка А 3. Следовательно верен следующий порядок чисел по возрастанию: A 1, A 3, A 2
Презентация решение.pptx