Формат с плавающей запятой примеры

Формат с плавающей запятой примеры

Так как в некоторых, преимущественно англоязычных и англофицированных, странах (см. подробный список Decimal separator (англ.) ) при записи чисел целая часть отделяется от дробной точкой, то в терминологии этих стран фигурирует название «плавающая точка» (floating point (англ.) ). Так как в России целая часть числа от дробной традиционно отделяется запятой, то для обозначения того же понятия исторически используется термин «плавающая запятая», однако в настоящее время в русскоязычной литературе и технической документации можно встретить оба варианта.

Происхождение названия

Название «плавающая запятая» происходит от того, что запятая в позиционном представлении числа (десятичная запятая, или, для компьютеров, двоичная запятая — далее по тексту просто запятая) может быть помещена где угодно относительно цифр в строке. Это положение запятой указывается отдельно во внутреннем представлении. Таким образом, представление числа в форме с плавающей запятой может рассматриваться как компьютерная реализация экспоненциальной записи чисел.

Преимущество использования представления чисел в формате с плавающей запятой над представлением в формате с фиксированной запятой (и целыми числами) состоит в том, что можно использовать существенно больший диапазон значений при неизменной относительной точности. Например, в форме с фиксированной запятой число, занимающее 8 разрядов в целой части и 2 разряда после запятой, может быть представлено в виде 123456,78; 8765,43; 123,00 и так далее. В свою очередь, в формате с плавающей запятой (в тех же 8 разрядах) можно записать числа 1,2345678; 1234567,8; 0,000012345678; 12345678000000000 и так далее, но для этого необходимо двухразрядное дополнительное поле для записи показателей степени 10 от 0 до 1610, при этом общее число разрядов составит 8+2=10.

Скорость выполнения компьютером операций с числами, представленными в форме с плавающей запятой, измеряется в мегафлопcах (от англ. FLOPS — число операций с плавающей запятой в секунду ), гигафлопcах и так далее, и является одной из основных единиц измерения быстродействия вычислительных систем.

Структура числа

Число с плавающей запятой состоит из:

  • Мантиссы (выражающей значение числа без учёта порядка)
  • Знака мантиссы (указывающего на отрицательность или положительность числа)
  • Порядка (выражающего степень основания числа, на которое умножается мантисса)
  • Знака порядка

Нормальная форма и нормализованная форма

Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1) (). Число с плавающей запятой, находящееся не в нормальной форме, теряет точность по сравнению с нормальной формой. [источник не указан 903 дня] Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×10 0 , 0,001×10 −1 , 0,01×10 −2 , 0,1×10 −3 ), поэтому распространена (особенно в информатике) также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно) (). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет.

Использование в вычислительных машинах

В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047×10 −25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.

Краткий обзор

Существует несколько способов того, как строки из цифр могут представлять числа:

  • Наиболее распространённый путь представления значения числа из строки с цифрами — в виде целого числа — запятая (radix point) по умолчанию находится в конце строки.
  • В общем математическом представлении строка из цифр может быть сколь угодно длинной, а положение запятой обозначается путём явной записи символа запятой (или, на Западе, точки) в нужном месте.
  • В системах с представлением чисел в формате с фиксированной запятой существует определённое условие относительно положения запятой. Например, в строке из 8 цифр условие может предписывать положение запятой в середине записи (между 4-й и 5-й цифрой). Таким образом, строка «00012345» обозначает число 1,2345 (нули слева всегда можно отбросить).
  • В экспоненциальной записи используют стандартный (нормализованный) вид представления чисел. Число считается записанным в стандартном (нормализованном) виде, если оно записано в виде aqn , где a , называемое мантиссой, такое, что , n — целое, называется показатель степени и q — целое, основание системы счисления (на письме это обычно 10). То есть в мантиссе запятая помещается сразу после первой значащей (не равной нулю) цифры, считая слева направо, а дальнейшая запись даёт информацию о действительном значении числа. Например, период обращения (на орбите) спутника планеты ЮпитераИо, который равен 152853,5047 с, в стандартном виде можно записать как 1,528535047×10 5 с. Побочным эффектом ограничения на значения мантиссы является то, что в такой записи невозможно изобразить число 0.
  • Запись в форме с плавающей запятой похожа на запись чисел в стандартном виде, но мантисса и экспонента записываются раздельно. Мантисса записывается в нормализованном формате — с фиксированной запятой, подразумеваемой после первой значащей цифры. Возвращаясь к примеру с Ио́, запись в форме с плавающей запятой будет 1528535047 с показателем 5. Это означает, что записанное число в 10 5 раз больше числа 1,528535047, то есть для получения подразумеваемого числа запятая сдвигается на 5 разрядов вправо. Однако, запись в форме с плавающей запятой используется в основном в электронном представлении чисел, при котором используется основание системы счисления 2, а не 10. Кроме того, в двоичной записи мантисса обычно денормализована, то есть запятая подразумевается до первой цифры, а не после, и целой части вообще не имеется в виду — так появляется возможность и значение 0 сохранить естественным образом. Таким образом, десятичная 9 в двоичном представлении с плавающей запятой будет записана как мантисса +1001000…0 и показатель +0…0100. Отсюда, например, беды с двоичным представлением чисел типа одной десятой (0,1), для которой двоичное представление мантиссы оказывается периодической двоичной дробью — по аналогии с 1/3, которую нельзя конечным количеством цифр записать в десятичной системе счисления.
Читайте также:  Как удалить остаточные файлы с телефона

Запись числа в форме с плавающей запятой позволяет производить вычисления над широким диапазоном величин, сочетая фиксированное количество разрядов и точность. Например, в десятичной системе предоставления чисел с плавающей запятой (3 разряда) операцию умножения, которую мы бы записали как

0,12 × 0,12 = 0,0144

в нормальной форме представляется в виде

(1,20×10 −1 ) × (1,20×10 −1 ) = (1,44×10 −2 ).

В формате с фиксированной запятой мы бы получили вынужденное округление

0,120 × 0,120 = 0,014.

Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа.

Диапазон чисел, представимых в формате с плавающей запятой

Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от 4,94×10 −324 до 1.79×10 308 (от 2 −52 × 2 −1022 до

1 × 2 1024 ). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения NaN (Not a Number, не число) и +/-INF (Infinity, бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.

Точность Одинарная Двойная Расширенная
Размер (байты) 4 8 10
Число десятичных знаков 7 15 19
Наименьшее значение (>0), denorm 1,4×10 −45 5,0×10 −324 1,9×10 −4951
Наименьшее значение (>0), normal 1,2×10 −38 2,3×10 −308 3,4×10 −4932
Наибольшее значение 3,4×10 +38 1,7×10 +308 1,1×10 +4932
Поля S-E-F S-E-F S-E-I-F
Размеры полей 1-8-23 1-11-52 1-15-1-63
  • S — знак, E — показатель степени, I — целая часть, F — дробная часть
  • Так же, как и для целых, знаковый бит — старший.

Машинная эпсилон

В отличие от чисел с фиксированной запятой, сетка чисел, которые способна отобразить арифметика с плавающей запятой, неравномерна: она более густая для чисел с малыми порядками и более редкая — для чисел с большими порядками. Но относительная погрешность записи чисел одинакова и для малых чисел, и для больших. Поэтому можно ввести понятие машинной эпсилон.

Машинной эпсилон называется наименьшее положительное число ε такое, что (знаком обозначено машинное сложение). Грубо говоря, числа a и b, соотносящиеся так, что , машина не различает.

Часто приходится обрабатывать очень большие числа (например, расстояние между звёздами) или наоборот очень маленькие числа (например, размеры атомов или электронов). При таких вычислениях пришлось бы использовать числа с очень большой разрядностью. В то же время нам не нужно знать расстояние между звёздами с точностью до миллиметра. Для вычислений с такими величинами числа с фиксированной запятой неэффективны.

В десятичной арифметике для записи таких чисел используется алгебраическая форма. При этом число записывается в виде мантиссы, умноженной на 10 в степени, отображающей порядок числа, Например:

0,2×10 5 ;
0,16×10 -38

Для записи двоичных чисел тоже используется такая форма записи. Она позволяет работать с числами с большим диапазоном значений Эта форма записи называется запись числа с плавающей точкой. Напомним, что мантисса не может быть больше единицы и после запятой в мантиссе не можетзаписываться ноль.

В программировании для записи таких чисел используются специальные форматы переменных. В языке СИ это такие форматы как float и double. Они описываются стандартом . Этих же стандартов придерживается большинство других языков программирования. При работе с числами с плавающей запятой в составе языка программирования обычно не возникает трудностей. Все преобразования форматов чисел осуществляются средствами самого языка программирования. Однако при передаче данных или при работе с микроконтроллерами часто приходится писать программу на языке программирования ассемблер и тогда может потребоваться знание внутреннего представления этих чисел.

Читайте также:  За что отвечает процессор в ноутбуке

Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово. Чаще всего числа хранятся в нескольких соседних ячейках памяти процессора. Форматы числа в формате с плавающей запятой одинарной точности и числа в формате с плавающей запятой удвоенной точности приведены на рисунке


Рисунок 1. Форматы числа с плавающей запятой

На рисунке буквой S обозначен знак числа, 0 — это положительное число, 1 — отрицательное число.

Группа бит, обозначенная e предназначена для записи смещённого порядка числа. Смещение потребовалось, чтобы не вводить в двоичный код числа с плавающей запятой еще один знак. Смещённый порядок всегда является положительным числом. В двоичном коде одинарной точности float для записи порядка числа выделено восемь бит. Для него смещение порядка числа принято 127. Для смещённого порядка в двоичном коде числа с плавающей запятой двойной точности double отводится 11 бит. В нем смещение порядка числа составляет — 1023.

В десятичной мантиссе после запятой могут присутствовать цифры 1. 9, а в двоичной — только 1. Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая. Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.

Рассмотрим несколько примеров:

1) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:

11000001 01001000 00000000 00000000

— Знаковый бит, равный 1 показывает, что число отрицательное.

— Экспонента 10000010 в десятичном виде соответствует числу 130. Вычтя число 127 из 130, получим число 3.

— Теперь запишем мантиссу: 1,100 1000 0000 0000 0000 0000

— И, наконец, определим десятичное число: 1100,1b = 12,5d

2) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:

11000011 00110100 00000000 00000000

— Знаковый бит, равный 1 показывает, что число отрицательное.

— Экспонента 10000110 в десятичном виде соответствует числу 134. Вычтя число 127 из 134, получим число 7.

— Теперь запишем мантиссу: 1,011 0100 0000 0000 0000 0000

— И, наконец, определим десятичное число: 10110100b=180d

Для того чтобы записать ноль, в двоичном представлении числа с плавающей запятой достаточно записать в смещенный порядок число 00000000b. Значение мантиссы при этом не имеет значения. Число, в котором все байты равны 0, тоже попадает в этот диапазон значений.

Бесконечность в числе с плавающей запятой соответствует смещенному порядку 11111111b и мантиссе, равной 1,0. При этом существует минус бесконечность и плюс бесконечность (переполнение и антипереполнение), которые часто отображаются на экран монитора компьютера или дисплей микропроцессорного устройства как +INF и -INF.

Все остальные комбинации битов мантиссы числа с плавающей запятой (в том числе и все единицы) при смещенном порядке 11111111b воспринимаются языками программирования как не числа и отображаются на экран: NaN.

  1. IEEE 754
  2. Число с плавающей запятой wikipedia
  3. Разработка → Что нужно знать про арифметику с плавающей запятой https://habrahabr.ru/
  4. Представление вещественных чисел http://neerc.ifmo.ru/

Другие виды двоичных кодов:

Целочисленные двоичные коды Представление двоичных чисел в памяти компьютера или микроконтроллера
https://digteh.ru/proc/IntCod.php

Двоично-десятичный код Иногда бывает удобно хранить числа в памяти процессора в десятичном виде
https://digteh.ru/proc/DecCod.php

Запись текстов двоичным кодом Представление текстов в памяти компьютеров и микроконтроллеров
https://digteh.ru/proc/text.php

Системы счисления В настоящее время и в технике и в быту широко используются как позиционные, так и непозиционные системы счисления.
https://digteh.ru/digital/SysSchis.php

Автор Микушин А. В. All rights reserved. 2001 . 2019

Предыдущие версии сайта:
http://neic.nsk.su/

Об авторе:
к.т.н., доц., Александр Владимирович Микушин

Кандидат технических наук, доцент кафедры САПР СибГУТИ. Выпускник факультета радиосвязи и радиовещания (1982) Новосибирского электротехнического института связи (НЭИС).

А.В.Микушин длительное время проработал ведущим инженером в научно исследовательском секторе НЭИС, конструкторско технологическом центре "Сигнал", Научно производственной фирме "Булат". В процессе этой деятельности он внёс вклад в разработку систем радионавигации, радиосвязи и транкинговой связи.

Научные исследования внедрены в аппаратуре радинавигационной системы Loran-C, комплексов мобильной и транкинговой связи "Сигнал-201", авиационной системы передачи данных "Орлан-СТД", отечественном развитии системы SmarTrunkII и радиостанций специального назначения.

Числовые величины, которые могут принимать любые значения (целые и дробные) называются вещественными числами. Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.

Форма с плавающей точкой использует представление вещественного числа А в виде произведения мантиссы m на основание системы счисления q в некоторой целой степени p, которую называют порядком:

Например, число 139,76 можно записать в виде: 0,13976×10 3 . Здесь

m = 0,13976 – мантисса, q=10 – основание системы счисления,

Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная в мантиссе. Отсюда название «плавающая точка». Однако справедливы и следующие равенства:

139,76=13,976×10 1 = 1,3976×10 2 = 0,013976х10 4 = 13976 х10 -2

Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой.

Читайте также:  Поларис чья фирма какой страны

Мантисса в нормализованном представлении должна удовлетворять условию: 1/n 3 .

В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой.

Пример. Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:

± маш. порядок МАНТИССА
1-й байт 2-й байт 3-й байт 4-й байт

В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 – минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком (одним из 128 значений) и истинным (назовем его математическим) устанавливается следующее соответствие:

Машинный порядок
Математический порядок -64 -63 -62 -61

Если обозначить машинный порядок Мq, а математический q, то связь между ними выразится формулой: Мq = q + 64

Итак, машинный порядок смещен относительно математического на 64 единицы и имеет только положительные значения. Полученная формула записана в десятичной системе счисления. В двоичной системе счисления формула имеет вид:

При выполнении вычислений с плавающей точкой процессор это смещение учитывает.

Алгоритм для получения представления действительного числа в памяти ЭВМ:

1) Перевести модуль данного числа в двоичную систему счисления;

2) Записать полученное двоичное число в нормализованном виде;

3) Определить машинный порядок с учетом смещения;

4) Учитывая знак заданного числа (0 – положительное; 1 – отрицательное), записать его представление в памяти ЭВМ.

Например, запишем внутреннее представление числа 139,76 в форме с плавающей точкой в 4-х байтовой ячейке:

1) Переведем десятичное 139,76 и запишем его 24-значащими цифрами: 139,7610 = 10001011,11000010100011112

2) Запишем полученное двоичное число в форме нормализованного двоичного числа с плавающей точкой:

10001011,11000010100011112 = 0,1000101111000010100011112 х10 1000 ,

где 0,1000101111000010100011112 – мантисса;

10 – основание системы счисления (210=10 2 );

3) Определим машинный порядок:

Mq2 = 1000 + 1000000 = 1001000

4) Запишем представление числа в ячейке памяти:

± маш. порядок МАНТИССА
0 1001000

Для того чтобы получить внутренне представление десятичного отрицательного числа -139,76 достаточно в полученном выше представлении заменить в разряде знака числа 0 на 1. Никакого инвертирования, как для отрицательных целых чисел, здесь не происходит.

Задачи для самостоятельного решения

1. Компьютер работает только с целыми положительными числами. Каков диапазон изменения чисел, если для представления числа в памяти компьютера отводится 4 байта?

2. Каков диапазон изменения целых чисел, если для представления числа в памяти компьютера отводится 4 байта?

3. Записать в двоичной и шестнадцатеричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа, представленных в 1-байтовой ячейке памяти.

4. Получить внутреннее представление целого числа 160710 в 2-х байтовой ячейке памяти.

5. Получить внутреннее представление целого числа -160710 в 2-х байтовой ячейке памяти.

6. По шестнадцатеричной форме внутреннего представления целого числа F67D в 2х-байтовой ячейке восстановить само число.

7. Представить число 0,005089 в нормализованной форме с плавающей точкой в десятичной системе счисления.

8. Получите двоичную форму внутреннего представления действительных чисел 224,25 и -224,25 в формате с плавающей точкой в 4-х байтовой ячейке.

9. Запишите в десятичной системе счисления целое число, если его дополнительный код 1000000110101110.

Список литературы

1. Информатика (курс лекций) / В. Т. Безручко. — М.: ИД "Форум": ИНФРА-М., 2006. – 432с.

2. Информатика: 3-е изд. перераб. / под ред. Н.В.Макаровой. – М.: Финансы и статистика, 2009. – 768 с.

3. Информатика / В. А. Каймин. – М.: ИД "Форум": ИНФРА-М, 2008. – 285 с.

4. Информатика: аппаратные средства персонального компьютера: Учеб. пособие. / В. Н. Яшин. — М.: ИНФРА-М, 2008. – 254 с.

5. Информатика. Учебное пособие / Попова О.В. Красноярск: Красноярский институт экономики Санкт-Петербургской академии управления и экономики (НОУ ВПО), 2007. — 186 с.

1. Информатика, часть 1: Учебно-методическое пособие для студентов очной и заочной форм обучения / Болотов А. М., Вологжанин О.Ю., Катанова Т.Н., Сыромятников И.И., Хренова Н.Ф. — Пермский институт (филиал) ГОУ ВПО "Российский государственный торгово-экономический университет": Издательство "ОТ и ДО", 2009. – 163 стр.

2. Введение в информатику. Лабораторные работы. / Авт.-сост. А.П. Шестаков; Перм. ун-т. — Пермь, 1999. (Ч. I — 56 с.)

3. Арифметические операции в позиционных системах счисления. Электронный ресурс: http://www.chebgym5.ru/inf/p32aa1.html

4. Представление информации в компьютере. Электронный ресурс: http://ulkolledg.narod.ru/material/Burdina_2/index.htm

Последнее изменение этой страницы: 2016-12-16; Нарушение авторского права страницы

Ссылка на основную публикацию
Усики для автомобильной антенны
Убираясь в бардачке я наткнулся на ремкомплект антенных усиков — лежит наверно уже полгода, всё наклеить не могу, то забываю,...
Телефонный шлюз что это
VoIP-шлюз — это межсетевой шлюз, предназначенный для перевода трафика между сетями различных типов. VoIP-шлюзы можно разделить на многоканальные и одноканальные:...
Телефонная клавиатура на компьютере
Виртуальная клавиатура выручит Вас, когда выйдет из строя основное физическое устройство ввода, полностью или частично ( поломается несколько клавиш )....
Усиление сигнала интернета на даче своими руками
С наступление дачного сезона, я озадачился установкой хорошего скоростного интернет на даче, у нас голосовая связь работает без проблем, а...
Adblock detector