![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754
Представление числа в нормализованном экспоненциальном виде. Возьмем, к примеру, десятичное число 155, 625 Представим это число в нормализованном экспоненциальном виде: 1, 55625∙ 10+2=1, 55625∙ exp10+2 Число 1, 55625∙ exp10+2 состоит из двух частей: мантиссы M=1.55625 и экспоненты exp10=+2 Если мантисса находится в диапазоне 1< =M< 10, то число считается нормализованным. Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +2). Порядок экспоненты может иметь отрицательное значение, например число 0, 0155625=1, 55625∙ exp10-2.
Представление числа в денормализованном экспоненциальном виде. Возьмем, к примеру, десятичное число 155, 625 Представим это число в денормализованном экспоненциальном виде: 0, 155625∙ 10+3=0, 155625∙ exp10+3 Число 0, 155625∙ exp10+3 состоит из двух частей: мантиссы M=0, 155625 и экспоненты exp10=+3 Если мантисса находится в диапазоне 0, 1< =M< 1, то число считается денормализованным. Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +3). Порядок экспоненты может иметь отрицательное значение, например число 0, 0155625=0, 155625∙ exp10-3.
Преобразование десятичного числа в двоичное число с плавающей точкой. Наша задача сводится к представлению десятичного числа с плавающей точкой, в двоичное число с плавающей точкой в экспоненциальном нормализованном виде. Для этого разложим заданное число по двоичным разрядам: 155, 625 = 1∙ 27 +0∙ 26+0∙ 25+1∙ 24+1∙ 23+0∙ 22+1∙ 21+1∙ 20+1∙ 2-1+0∙ 2-2+1∙ 2-3 155, 625 =128 + 0 + 0 + 16 + 8 + 0 + 2 + 1 + 0, 5 + 0 + 0, 125 155, 62510 = 10011011, 1012 - число в десятичной и в двоичной системе с плавающей точкой
Приведем полученное число к нормализованному виду в десятичной и двоичной системе: 1, 55625∙ exp10+2 = 1, 0011011101∙ exp2+111 В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа: Мантиссу M=1, 0011011101 Экспоненту exp2= +111
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754 Основное применение в технике и программирование получили форматы 32 и 64 бита. Например, в VB используют типы данных single (32 бита) и double (64 бита). В Си аналогично используют float (32 бита) и double (64 бит) Рассмотрим преобразование двоичного числа 10011011, 101 в формат single-precision (32 бита) стандарта IEEE 754. Остальные форматы представления чисел в IEEE 754 являются увеличенной копией single-precision. Чтобы представить число в формате single-precision IEEE 754 необходимо привести его к двоичному нормализованному виду. В §3 мы проделали это преобразование над числом 155, 625. Теперь рассмотрим, как двоичное нормализованное число преобразуется к 32 битному формату IEEE 754. Описание преобразования в 32 битный формат IEEE 754: 1. Число может быть + или -. Поэтому отводится 1 бит для обозначения знака числа: 0-положительное, 1-отрицательное. Этот самый старший бит в 32 битной последовательности. 2. Далее пойдут биты экспоненты, для этого выделяют 1 байт (8 бит). Экспонента может быть, как и число, со знаком + или -. Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127(0111 1111). То есть, если наша экспоната = +7 (+111 в двоичной), то смещенная экспонента = 7+127=134. А если бы, наша экспонента была -7, то смещенная экспонента=127-7 =120. Смещенную экспоненту записывают в отведенные 8 бит. При этом, когда нам будет нужно получить экспоненту двоичного числа, мы просто отнимем 127 от этого байта. 3. Оставшиеся 23 бита отводят для мантиссы. Но, у нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1< =M< 2. Нет смыла, записывать единицу в отведенные 23 бита, поэтому в отведенные 23 бита записывают остаток от мантиссы. В таблице представлено десятичное число 155, 625 в 32-х битном формате IEEE754
|