Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Вещественные числа (числа с плавающей запятой).
ПК имеет несколько типов вещественных чисел, различающихся количеством разрядов, отведенных для мантиссы и порядка числа. Мы будем рассматривать тип float для 32-х разрядных процессоров.. Тип float по стандарту IEEE 754 - это двоичное число, занимающее 4 байта памяти. Нумерация двоичных разрядов 31, 30,..., 1, 0. Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно. Например, 0, 0001 можно записать в 4 формах: 0, 0001 = 0, 0001× 100, где 0, 0001 - мантисса, а порядок равен 0 (степень основания системы счисления 10) 0, 0001 = 0, 001× 10− 1 0, 0001 = 0, 01× 10− 2 0, 0001 = 0, 1× 10− 3 Поэтому в указанном стандарте применяется другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа 0 (а заодно и некоторых других полезных чисел, таких как и ). Так как старший двоичный разряд (целая часть) мантиссы вещественного числа в нормализованном виде всегда равен «1», то его можно не записывать, сэкономив таким образом один бит, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной, десятичной и др.), этого замечательного свойства нет (ведь целая часть там может быть не только единицей). В указанном формате float старший 31-й разряд используется для хранения знака числа «0»-знак «+», «1» - знак «-». Один байт (разряды 23-30) используются для хранения порядка. Порядок записан со сдвигом - 127. То есть, чтобы получить актуальное значение порядка нужно вычесть из него сдвиг. Если записан порядок 243, то в самом деле порядок числа составляет: P = 243 – 127 = 116. Младшие 23 бита числа (разряды 0 – 22) используются для записи дробной части мантиссы. Целая часть, которая всегда равна «1» в памяти не хранится. Она добавляется при обработке данного числа.
Максимальное значение числа формата float:
Максимальному смещенному порядку 111111102 = 25510 соответствует реальный порядок числа рmax = 254 – 127 = 127 (порядок 111111112 зарезервирован для представления и ). Максимальное значение мантиссы 1, 1111 1111 1111 1111 1111 1112 = 10, 0000 0000 0000 0000 0000 0002 - 0, 0000 0000 0000 0000 0000 0012, что соответствует в 10 с.с. 2 – 1× 2-23 ≈ 1.99999988. Таким образом, максимальное число в формате float получается равным:
1.99999988 × 2127 ≈ 3.402823 × 1038
|