Как именно фиксированная точка более точна, чем с плавающей точкой - PullRequest
0 голосов
/ 30 мая 2019

Я (думаю) я понимаю представления с фиксированной и с плавающей запятой дробных чисел в двоичном виде.Однако я часто вижу фиксированную точку, описанную как более точную с меньшим диапазоном, и плавающую точку, описанную как менее точную с большим диапазоном.Теперь, если я правильно понимаю, неточности с плавающей запятой проистекают из того факта, что она не может представлять 0,1 и, следовательно, многих других действительных чисел = я думал, что у фиксированной точки была та же проблема, так как она описывается как более "точная".Если я не ошибаюсь, фон Нейман тоже, похоже, отстаивал эту идею и сказал, что мы не должны использовать число с плавающей запятой и вместо этого фиксированное, но ПОЧЕМУ?

1 Ответ

0 голосов
/ 30 мая 2019

При использовании 32 бит для представления с плавающей запятой они обычно делятся на 1 бит для кодирования знака, 8 бит для кодирования показателя степени и 23 бита для первичного кодирования значения и.Из-за некоторого особого отношения к показателю степени полное значение имеет 24 бита.В этом формате разрешение чисел с плавающей запятой составляет 1 часть в 2 23 , в том смысле, что изменение младшего бита изменяет представленное значение в 2 -23 раз значениестарший бит.

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

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

С плавающей точкой предлагает динамический диапазон , что означает, что он может обрабатывать большие или малые числа, изменяя показатель степени как часть вычислений.Фиксированная точка имеет только статический диапазон - она ​​может представлять большие или маленькие числа, но вы должны выбрать диапазон при разработке кода.(В некоторой степени это можно уточнить, например, выбрав небольшой диапазон для входных значений, но затем увеличив диапазон, когда значения добавляются вместе для формирования больших и больших сумм или других результатов. Однако масштаб для каждого конкретного вычисления долженбыть выбранным во время разработки.) Если вам нужно более высокое разрешение и вам не нужен динамический диапазон, используйте фиксированную точку.Если вам нужен динамический диапазон и вам не нужно более высокое разрешение, тогда используйте плавающую точку.Если вам нужно и то, и другое, используйте больше битов.

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

...