- •Вопрос 10
- •Вопрос 11 Вещественные числа (числа с плавающей точкой)
- •Вопрос 12
- •Вопрос 13
- •Вопрос 14
- •Вопрос 15
- •Вопрос 16
- •Характеристики алгоритмов сжатия и их применения Коэффициент сжатия
- •Допустимость потерь
- •Системные требования алгоритмов
- •Сжатие без потерь
- •Сжатие и комбинаторика
- •Техника сжатия без потерь
- •Методы сжатия без потерь
- •Многоцелевые
- •Сжатие аудио
- •Сжатие графики
- •Типы сжатия с потерями
- •Сжатие с потерями против сжатия без потерь
- •Недостатки
- •Вопрос 17
- •Вопрос 18
- •Вопрос 19
- •Вопрос 20
Вопрос 11 Вещественные числа (числа с плавающей точкой)
Все равные по абсолютному значению положительные и отрицательные числа отличаются только этим битом. В остальном числа с разным знаком полностью одинаковы. Для представления отрицательных чисел здесь не используется дополнительный код. Поле мантиссы содержит мантиссу нормализованного числа. Одинарная точность: 1.(цифры мантиссы)*2(P-127) Двойная точность: 1.(цифры мантиссы)*2(P-1023) Расширенная точность: 1.(цифры мантиссы)*2(P-16383)
Пример. Запишите код действительного числа, интерпретируя его как величину типа Double. а) 446,15625; Переводим десятичное число в двоичное представление.
Целая часть от деления |
Остаток от деления |
446 div 2 = 223 |
446 mod 2 = 0 |
223 div 2 = 111 |
223 mod 2 = 1 |
111 div 2 = 55 |
111 mod 2 = 1 |
55 div 2 = 27 |
55 mod 2 = 1 |
27 div 2 = 13 |
27 mod 2 = 1 |
13 div 2 = 6 |
13 mod 2 = 1 |
6 div 2 = 3 |
6 mod 2 = 0 |
3 div 2 = 1 |
3 mod 2 = 1 |
1 div 2 = 0 |
1 mod 2 = 1 |
Остаток от деления записываем в обратном порядке. Получаем число в 2-ой системе счисления: 110111110 446 = 1101111102 Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения. 0.15625*2 = 0.313 (целая часть 0) 0.313*2 = 0.626 (целая часть 0) 0.626*2 = 1.252 (целая часть 1) 0.252*2 = 0.504 (целая часть 0) 0.504*2 = 1.008 (целая часть 1) Получаем число в 2-ой системе счисления: 00101
0.15625 = 001012 446.15625 = 110111110,001012 = 1,1011111000101*28
Знак S = 0 Порядок P = 8 + 1023 = 103110 = 100000001112 Мантисса: 1011111000101 Для числа с двойной точностью мантисса занимает 52 разряда. Добавляем нули. Мантисса: 1011 1110 0010 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 Запишем число: 0 10000000111 1011 1110 0010 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 В шестнадцатеричной системе счисления: 407BE2800000000016
б) -455,375. Переводим десятичное число в двоичное представление.
Целая часть от деления |
Остаток от деления |
455 div 2 = 227 |
455 mod 2 = 1 |
227 div 2 = 113 |
227 mod 2 = 1 |
113 div 2 = 56 |
113 mod 2 = 1 |
56 div 2 = 28 |
56 mod 2 = 0 |
28 div 2 = 14 |
28 mod 2 = 0 |
14 div 2 = 7 |
14 mod 2 = 0 |
7 div 2 = 3 |
7 mod 2 = 1 |
3 div 2 = 1 |
3 mod 2 = 1 |
1 div 2 = 0 |
1 mod 2 = 1 |
Остаток от деления записываем в обратном порядке. Получаем число в 2-ой системе счисления: 111000111 455 = 1110001112 Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения. 0.375*2 = 0.75 (целая часть 0) 0.75*2 = 1.5 (целая часть 1) 0.5*2 = 1 (целая часть 1) 0*2 = 0 (целая часть 0) Получаем число в 2-ой системе счисления: 0110 0.375 = 01102
455,375 = 111000111,01102 = 1,110001110110*28 2
Знак S = 1 Порядок P = 8 + 1023 = 103110 = 100000001112 Мантисса: 1100 0111 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 Запишем число: 1 10000000111 1100 0111 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
