Авторизация


...

Кто на сайте?

Сейчас 169 гостей и один зарегистрированный пользователь на сайте

  • heydeeste

Статистика

-Посетители : 22989
-Материалы : 209

Пользователь сайта продает...

  ENC28J60

Пользователь сайта покупает...

Алгоритм работы с плавающей запятой. Часть первая

Автор: Александр Милевский Просмотров: 5842

 

 

Необходимо в 16 разрядах разместить целую и дробную часть. Форма представления двоичных чисел называется формой с фиксированной запятой, если для размещения целой части числа отводится k разрядов n- разрядной сетки, а (без учета знака) для размещения дробной части отводится n-k разрядов. Для знака обычно отводится самый старший бит, 0=плюс; 1=минус, можно и с третьего байта взять бит, для этих целей. 

  Из определения получается, мы можем ставить запятую где хотим на выбранной разрядной сетки, где поставим запятую, там она и будет (фиксировано).Если количество разрядов дробной части размещаемого числа превышает n-k, то некоторые младшие разряды окажутся за пределами разрядной сетки и программой не воспринимаются. Обычно, если число меньше, чем можно разместить в такой разрядной сетки, то его называют «машинным нулем». И что получается. В результате отбрасывания младших разрядов дробной  части, расположенных за пределами разрядной сетки, возникает погрешность представления. Не буду вдаваться в теорию погрешностей, сделаю выводы:

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

Вопрос, а как быть, если работаешь с различными дробными числами и нужна очень высокая точность? Увеличивать разрядную сетку?  Вот поэтому я решил для себя, что нужно начинать разбираться с более точной формой «с плавающей запятой».

Если имеется 16 разрядов, то в форме с фиксированной запятой это и есть 16 разрядов, максимальная относительная погрешность 100%, а для формы с плавающей запятой это соответствует числу записанному в 127 разрядам, с погрешностью немногим больше 0,1%. Как, у меня голова в свое время закружилась.

Начинаю разбираться: Ну как могу, честно говоря стараюсь, что бы было понятно, прежде всего для вас. Сильно не ругайте.

2. Представление чисел в форме с «плавающей» запятой. Общие понятия.

Форма с «плавающей» запятой, еще её называют показательная форма, а за рубежом с «плавающей» точкой, применяется для расширения диапазона и уменьшения погрешности представления чисел в вычислительных устройствах. Сразу, загружу классическими определениями, надо знать правила игры.

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

 

  alt                                            

Страшно и не понятно, копаем дальше.

Показатель степени p, в которую возводится основание q называют порядком числа, а правильную дробь а – его мантиссой. Мантисса и порядок являются числами со знаком. Ну все не так страшно. Даю пример:

Десятичное число 123,456 может быть представлена в показательной форме (буду пользоваться этим определением) разными способами:

 123,456 = 0,123456 х 103

 123,456 =0,0123456 х 104    

и так далее.

0,123456 - мантисса

показатель степени 3 или 4 -порядок

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

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

0,0123456 х 10записано в ненормализованной форме, а для нормализации необходимо сдвинуть мантиссу на один разряд влево и, соответственно уменьшить порядок на 1. Получим 0,123456 х 103

Переходим к нашим родным двоичным числам.

2.1 Представление двоичных чисел в показательной форме. Общие понятия.

При записи двоичного числа в показательной форме в разрядной сетке следует выделить две группы разрядов. Их конечно надо определить заранее, исходя из применяемых в программе чисел и точности вычислений. Первая группа ( k- разрядов) предназначена для размещения кода мантиссы, вторая (n-k разрядов) для размещения кода порядка (без учета знаковых разрядов мантиссы и порядка). Что получается:                                                                                                              

alt

 

 

Все приведенные  выше рассуждения справедливы и к двоичным числам. Например:

Нормализованная форма записи двоичного числа 1110110,011имеет следующий вид  0,1110110011 х 10111.  

Для нормализации надо перенести запятую на 7 разрядов влево и записать в порядок 1112 или 710

Я надеюсь, понятно. Что бы еще было понятней, эти же числа в 10-ой системе.

118,3 в нормализованную 0,1183 х 103

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

Мы уже что-то знаем о этих двух формах представления числа. Простые математические вычисления нам помогут оценить диапазон представимых чисел и сравнить. Не зря ли мы эту кашу заварили? Мне кажется не зря.

Сравните: для 16 разрядной сетки

alt

 

 

Случайные статьи....

Prev Next

Трансиверы RFM12BP; IA4421;TRC102; MRF49XA. основные функции и настрой…

07-04-2011 Super User

Трансиверы RFM12BP; IA4421;TRC102; MRF49XA. основные функции и настройка

   Предлагается информация по радиомодулю цифрового трансивера RFM12BP,  полученная в результате его изучения. Эта информация будет полезна при изучении микросхем трансиверов IA4421;TRC102; MRF49XA.    

Программирование c нуля в AVRStudio 5 (ч.2)

05-02-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.2)

  Итак, продолжаем. В конце предыдущей части вам были предложены ссылки для скачивания AVR Studio 5. Возможно, к тому времени, когда вы будете читать эти заметки, на сайте будет опубликована уже новая версия этой программы, однако, как правило, основные принципы...

Автомат управления дневными ходовыми огнями

23-03-2012 wws63

Автомат управления дневными ходовыми огнями

С учётом требований, предъявляемых к ДХО, мной разработано и изготовлено устройство (далее – автомат),  предназначенное для управления работой штатных или дополнительно установленных противотуманных фар белого света и  обладает следующими функциями: 1. Плавное включение ламп ДХО при запуске и выключение при остановке...

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

09-03-2011 wws63

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

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


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru