Авторизация


...

Кто на сайте?

Сейчас 139 гостей и 2 зарегистрированных пользователей на сайте

  • inmiernikwesto

Статистика

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

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

  Адаптер питания

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

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

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

 

 

Необходимо в 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

Эмулятор коммутатора DS2413.

18-06-2012 Sergey Roslik

Эмулятор коммутатора DS2413.

    DS2413 - двухканальный адресуемый 1-Wire коммутатор. Выходы программируемого порта ввода-вывода представляют собой выходы с открытым стоком, имеют нагрузочную способность 20 мА и максимально допустимое приложенное напряжение 28 В. Управление и считывание состояний порта ввода-вывода осуществляется по определенному командному...

Каталог сайтов.

04-10-2014 Super User

Каталог сайтов.

RadioMaster - Сайт для начинающих радиолюбителей. Большой каталог схем, программы для моделирования схем. Проектирование роботов, и многое другое!       РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум.       Сайт радиолюбителей radiofanatic.ru. Схемы различных радиоустройств,...

Контроллер радиолюбительского репитера RR1Z

07-02-2016 Иван Шевченко (R1ZK)

Контроллер радиолюбительского репитера RR1Z

В данной статье  рассматривается контроллер  радиолюбительского репитера, который был разработан по просьбе радиолюбителей клуба «Мурманск» и предназначен для установки в составе репитера RR1Z.  Устройство работает без нареканий с марта 2015 года. Автором предоставлены все необходимые для повторения материалы включая исходник...

Промышленный терморегулятор. Часть 3.

30-09-2011 Sergey Roslik

Промышленный терморегулятор. Часть 3.

 1 Часть - основные технические характеристики, схема, печатная плата, прошивка.  2 Часть - подключение устройства к ОРС серверу, конфигурирование ОРС сервера.  3 Часть - выборка данных с ОРС сервера и отображение их на мнемосхеме.  У меня на предприятии используется программный комплекс «НЕВА» (http://energosoyuz.spb.ru),...


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

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