360 likes | 721 Views
Представление чисел в формате с плавающей точкой.
E N D
Представление чисел в формате с плавающей точкой
Для хранения и обработки вещественных чисел в компьютере используется формат чисел с плавающей точкой. Положение точки может меняться. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка».
Содержание Формат чисел с плавающей точкой Способы представления чисел в памяти компьютера Стандарт IEEE 754 Форматы стандарта IEEE Представление мантиссы в стандарте IEEE Представление порядка в стандарте IEEE Смещенный порядок Диапазон изменения чисел Характеристики чисел с плавающей точкой стандарта IEEE Алгоритм представления числа с плавающей точкой Примеры Достоинства формата чисел с плавающей точкой Недостатки формата чисел с плавающей точкой
Формат чисел с плавающей точкой Этот способ представления опирается на нормализованную (экспоненциальную) запись действительных чисел: A= mqn, где m – мантисса числа; q– основание системы счисления; n – порядок числа. Мантисса должна отвечать условию: Следовательно, мантисса должна быть правильной дробью, имеющей после запятой любую цифру, отличную от нуля: 0,052415 = 0, 52415 * 10-1 550000=0,55 * 106
мантисса порядок знак порядка знак мантиссы Способы представления чисел в памяти компьютера При записи числа выделяется определенное количество разрядов для хранения мантиссы, знака мантиссы, порядка и знака порядка: В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. ( пример на след. слайде)
Пример представления чисел в форме с плавающей точкой В памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q =2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке: В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус.
Стандарт IEEE 754 До 80-х годов каждый производитель поддерживал собственный формат чисел с плавающей точкой. Все они отличались друг от друга. Более того, в некоторых из них арифметические действия выполнялись неправильно, поскольку арифметика с плавающей точкой имеет некоторые тонкости, которые не очевидны для среднестатистического разработчика аппаратного обеспечения. Чтобы изменить эту ситуацию, в конце 70-х годов институт IEEE учредил комиссию по стандартизации арифметики с плавающей точкой. Целью было не только дать возможность переносить данные с одного компьютера на другой, но и обеспечить разработчиков аппаратного обеспечения заведомо правильной моделью. В результате в 1985 г. вышел стандарт IEEE 754. В настоящее время большинство процессоров (в том числе Intel, SPARC и JVM) содержат команды с плавающей точкой, которые соответствуют этому стандарту.
Форматы стандарта IEEE • одинарной точности (32 бита); • двойной точности (64 бита); • повышенной точности (80 бит). • Формат повышенной точности предназначен для уменьшения ошибки округления. Он применяется главным образом в арифметических устройствах с плавающей точкой, поэтому мы не будем о нем говорить.
Представление мантиссы в стандарте IEEE В представлении числа используется нормализованная мантисса. Нормализованная мантисса начинается с двоичной точки, за которой следует старший бит мантиссы, всегда равный 1, а затем - остаток мантиссы. Следуя практике, начатой с компьютера PDP-11, компьютерщики осознали, что 1 в старшем бите мантиссы сохранять не нужно, а нужно просто считать, что он там есть. Следовательно, стандарт определяет мантиссу следующим образом: она состоит из неявного бита, который всегда равен 1, и неявной двоичной точки, за которыми идут 23 или 52 произвольных бита. Если все 23 или 52 бита мантиссы равны 0, то мантисса имеет значение 1,0. Если все биты мантиссы равны 1, то числовое значение мантиссы немного меньше, чем 2,0. Во избежание путаницы в английском языке для обозначения комбинации из неявного бита, неявной двоичной точки и 23 или 52 явных битов вместо термина мантисса (mantissa) используется термин значащая часть числа (significand). Значащая часть числа (s) всех нормализованных чисел лежит в диапазоне 1 <= s < 2
Представление порядка в стандарте IEEE Порядок числа хранится "смещенным", т.е. к нему прибавляется фиксированное число так, чтобы порядок был всегда неотрицательным. Всегда неотрицательный порядок избавляет от необходимости выделять один байт для хранения знака порядка и упрощает выполнения операций сравнения и арифметических операций над порядками. Знак порядка в ячейке не хранится. Но истинный порядок может быть как положительным так и отрицательным. Разумно разделить поровну между положительными и отрицательными значениями, отводимые для хранения порядка разряды памяти компьютера. В таком случае между машинным порядком и истинным (ИП) устанавливается следующее соответствие: - для формата одинарной точности
Представление порядка в стандарте IEEE (продолжение) Если обозначить машинный порядок МП, а истинный - ИП, то связь между ними выразится следующей формулой: МП10 = ИП10 + 127 - в десятичной системе счисления МП2 = ИП2 + 11111112 - в двоичной системе счисления (127 = 11111112) При выполнении вычислений с плавающей точкой процессор это смещение учитывает. Для того, чтобы не хранить знак порядка и был придуман так называемый смещённый порядок.
Диапазон изменения чисел 1. для чисел обычной точности максимальное значение порядка равно 11111112=127, следовательно, максимальное значение составит 2127≈0,17014118346*1039 Максимальное значение положительной мантиссы будет 223-1≈223≈107 (223=2(10*2,3) ≈10002,3≈10(3*2,3) ≈107) 2. для чисел двойной точности максимальное значение порядка равно 11111111112=1023, следовательно, максимальное значение составит 21023=0,898846567 * 10 308 Максимальное значение положительной мантиссы будет 252-1 ≈ 1015,6 (252=2(10*5,2) ≈10005,2≈10(3*5,2) ≈1015,6)
Характеристики чисел с плавающей точкой стандарта IEEE
Примечание Традиционные проблемы, связанные с числами с плавающей точкой — переполнение, потеря значимости и неинициализированные числа. Помимо нормализованных чисел в стандарте IEEE предусмотрено еще 4 типа чисел:
Алгоритм представления числа с плавающей точкой • перевести число из q - ичной системы счисления в двоичную; • представить двоичное число в нормализованной экспоненциальной форме; • рассчитать смещённый порядок числа; • разместить знак, порядок и мантиссу в соответствующие разряды сетки.
Пример1 знак числа порядок мантисса Как будет выглядеть число 0,5 в памяти машины в нормализованном формате одинарной точности? 1. 0,5 = 0,12 2. 0,12 = 1,0*2-1 (основание и порядок записаны в десятичной системе счисления) 3. СП = -1 + 127 = 126 (126 = 11111102) 4. Перепишем число в шестнадцатеричной системе счисления, предварительно разбив его побайтно: В нормализованном формате с одинарной точностью число 0,5 будет 001111110000000000000000000000002 = 3F00000016 (см. далее)
Пример2 Представить число -18,125 в машинном виде с использованием 4 байтового представления. 1. Переводим целую часть: Переводим дробную часть: -18,125 = -10010,0012 2. – 10010,0012 = - 1,0010001*24 или – 10010,0012 = -0,10010001*10100 (основание и порядок записаны в двоичной системе счисления) 3. СП10=4 + 127=131 СП2 = 1002 + 11111112 = 1000001124. в памяти машины число будет иметь вид: В нормализованном формате с одинарной точностью число - 18,125 будет 110000011001000100000000000000002 = C191000016
Достоинствами представления чисел в формате с плавающей запятой считаются: • большой диапазон обрабатываемых чисел; • более высокая точность выполняемых вычислений по сравнению с форматом чисел с фиксированной запятой. • Примечание: не все ученые и разработчики программ и аппаратных средств оптимистично настроены по отношению к стандарту IEEE 754. Они считают, что главная ошибка самого подхода к математической обработке числовых данных на компьютере состоит в попытке воспроизвести на нем невозможное – объекты теоретической математики, такие как действительные числа и интервалы действительных чисел. Компьютеринг нуждается в принципиально новых математических конструкциях, которые более адекватно отражали бы как потребности практики, так и возможности компьютеров. И первым шагом должны стать признание некорректности стандарта IEEE 754, а затем и разработка новых стандартов обработки нецелочисленных данных.
К недостаткам представления чисел в формате с плавающей точкой можно отнести: • более сложный алгоритм внутреннего представления чисел по сравнению с форматом чисел с фиксированной запятой; • сложность алгоритмов реализации арифметических операций.