.
1.Общие понятия
Сразу хочу объяснить, а зачем все это нужно? Прежде всего точность вычислений, а она порой, ой как нужна.
Различают две формы представления двоичных чисел: «с фиксированной запятой» и «с плавающей запятой». С фиксированной запятой, надеюсь, эту форму уже многие знают, но позволю себе напомнить коротко (для определения правил игры, работаем только с двухбайтовыми числами):
Необходимо в 16 разрядах разместить целую и дробную часть. Форма представления двоичных чисел называется формой с фиксированной запятой, если для размещения целой части числа отводится k разрядов n- разрядной сетки, а (без учета знака) для размещения дробной части отводится n-k разрядов. Для знака обычно отводится самый старший бит, 0=плюс; 1=минус, можно и с третьего байта взять бит, для этих целей.
Из определения получается, мы можем ставить запятую где хотим на выбранной разрядной сетки, где поставим запятую, там она и будет (фиксировано).Если количество разрядов дробной части размещаемого числа превышает n-k, то некоторые младшие разряды окажутся за пределами разрядной сетки и программой не воспринимаются. Обычно, если число меньше, чем можно разместить в такой разрядной сетки, то его называют «машинным нулем». И что получается. В результате отбрасывания младших разрядов дробной части, расположенных за пределами разрядной сетки, возникает погрешность представления. Не буду вдаваться в теорию погрешностей, сделаю выводы:
Вопрос, а как быть, если работаешь с различными дробными числами и нужна очень высокая точность? Увеличивать разрядную сетку? Вот поэтому я решил для себя, что нужно начинать разбираться с более точной формой «с плавающей запятой».
Если имеется 16 разрядов, то в форме с фиксированной запятой это и есть 16 разрядов, максимальная относительная погрешность 100%, а для формы с плавающей запятой это соответствует числу записанному в 127 разрядам, с погрешностью немногим больше 0,1%. Как, у меня голова в свое время закружилась.
Начинаю разбираться: Ну как могу, честно говоря стараюсь, что бы было понятно, прежде всего для вас. Сильно не ругайте.
2. Представление чисел в форме с «плавающей» запятой. Общие понятия.
Форма с «плавающей» запятой, еще её называют показательная форма, а за рубежом с «плавающей» точкой, применяется для расширения диапазона и уменьшения погрешности представления чисел в вычислительных устройствах. Сразу, загружу классическими определениями, надо знать правила игры.
В этой форме число изображается в виде произведения некоторой степени основания системы счисления и цифровой части, имеющий вид правильной дроби.
Страшно и не понятно, копаем дальше.
Показатель степени p, в которую возводится основание q называют порядком числа, а правильную дробь а – его мантиссой. Мантисса и порядок являются числами со знаком. Ну все не так страшно. Даю пример:
Десятичное число 123,456 может быть представлена в показательной форме (буду пользоваться этим определением) разными способами:
123,456 = 0,123456 х 103
123,456 =0,0123456 х 104
и так далее.
0,123456 - мантисса
показатель степени 3 или 4 -порядок
Мантисса может принимать бесконечное количество различных значений, меньших единицы, при соответствующих значениях порядка (т.е. запятая в мантиссе «плавает»). Нормализованное представление числа в показательной форме, называется, когда число не имеет в старшем разряде мантиссы нуля. ( напоминаю, мантисса не может быть больше 1). Все остальные представления называют ненормализованными.
Числа в показательной форме всегда хранятся в нормализованном виде (при этом младшие разряды мантиссы не теряются и точность вычисления повышается). Если после выполнения каких либо арифметических операций результат окажется ненормализованным, то перед занесением числа в память производится его нормализация, т.е. сдвиг мантиссы влево на соответствующее число разрядов. Например:
0,0123456 х 104 записано в ненормализованной форме, а для нормализации необходимо сдвинуть мантиссу на один разряд влево и, соответственно уменьшить порядок на 1. Получим 0,123456 х 103
Переходим к нашим родным двоичным числам.
2.1 Представление двоичных чисел в показательной форме. Общие понятия.
При записи двоичного числа в показательной форме в разрядной сетке следует выделить две группы разрядов. Их конечно надо определить заранее, исходя из применяемых в программе чисел и точности вычислений. Первая группа ( k- разрядов) предназначена для размещения кода мантиссы, вторая (n-k разрядов) для размещения кода порядка (без учета знаковых разрядов мантиссы и порядка). Что получается:
Все приведенные выше рассуждения справедливы и к двоичным числам. Например:
Нормализованная форма записи двоичного числа 1110110,0112 имеет следующий вид 0,1110110011 х 10111.
Для нормализации надо перенести запятую на 7 разрядов влево и записать в порядок 1112 или 710
Я надеюсь, понятно. Что бы еще было понятней, эти же числа в 10-ой системе.
118,3 в нормализованную 0,1183 х 103
2.2 Сравнение диапазонов представляемых чисел с фиксированной запятой и с плавающей запятой.
Мы уже что-то знаем о этих двух формах представления числа. Простые математические вычисления нам помогут оценить диапазон представимых чисел и сравнить. Не зря ли мы эту кашу заварили? Мне кажется не зря.
Сравните: для 16 разрядной сетки
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|