Область значений чисел задаёт пределы представления, в то время как точность задает расстояние между последовательными числами в представлении. Области значений и точность числа с фиксированной точкой зависят от длины слова и масштабирования.
Примечание
Вы должны обратить внимание на точность и область значений типов данных с фиксированной точкой и масштабированиями, которые вы выбираете в порядок, чтобы знать, будут ли вызываться методы округления или будут ли происходить переполнения или нижние потоки.
Область значений является диапазоном чисел, которые могут представлять тип данных с фиксированной точкой и масштабирование. Область значений ограничена, потому что слова с фиксированной точкой имеют ограниченный размер.
Область значений представимых чисел для дополнительного числа размера слова с фиксированной точкой , масштабирование и смещение иллюстрируется ниже, где значения , , и допускает как отрицательные, так и положительные числа.
Для как подписанных, так и неподписанных номеров с фиксированной точкой любого типа данных количество различных битовых шаблонов составляет 2wl.
Например, в дополнении двух отрицательные числа должны быть представлены, а также нули, поэтому максимальное значение равно 2wl -1 – 1. Поскольку существует только одно представление для нуля, существует неравное число положительных и отрицательных чисел. Это означает, что существует представление для но не для :
Поскольку тип данных с фиксированной точкой представляет числа в конечной области значений, переполнения и нижние потоки могут возникнуть, если результат операции больше или меньше, чем числа в этой области значений.
В двоичной арифметике процессору может потребоваться взять n-битный номер с фиксированной точкой и хранить его в m битах, где . Если m < n, область значений числа был уменьшен, и операция может привести к условию. Некоторые процессоры идентифицируют это условие как Inf
или NaN
. Для других процессоров, особенно цифровых сигнальных процессоров (DSP), значение насыщается или оборачивается.
Программное обеспечение Fixed-Point Designer™ позволяет вам либо насыщать, либо обернуть переполнения. Насыщение представляет положительное переполнение как самое большое положительное число в используемой области значений и отрицательное переполнение как самое большое отрицательное число в используемой области значений. Wrapping использует арифметику по модулю, чтобы привести переполнение назад в представимую область значений типа данных.
Когда вы создаете fi
объект, любые переполнения насыщены. The OverflowAction
свойство fimath по умолчанию saturate
. Можно вести журнал переполнений и подтоков путем установки LoggingMode
свойство fipref
объект к on
.
Если m > n, область значений числа был расширенная. Расширение области значений требует включения защитных бит, которые действуют, чтобы защитить от потенциального переполнения.
Simulink® программное обеспечение поддерживает насыщение и перенос для всех типов данных с фиксированной точкой, в то время как защитные биты поддерживаются только для дробных типов данных.
Точность числа с фиксированной точкой является различием между последовательными значениями, представимыми его типом данных и масштабированием. Значение наименее значимого бита, и, следовательно, точность числа, определяется количеством дробных бит. Значение с фиксированной точкой может быть представлено в пределах половины точности его типа данных и масштабирования.
Для примера представление с фиксированной точкой с четырьмя битами справа от двоичной точки имеет точность 2-4 или 0,0625, которое является значением его наименее значимого бита. Любое число в области значений этого типа данных и масштабирования может быть представлено в пределах (2-4)/2 или 0,03125, что вдвое меньше точности. Это пример представления числа с конечной точностью.
Точность слова с фиксированной точкой зависит от размера слова и расположения двоичной точки. Например, предположим, что вы должны представлять реальное число 35.375 с номером с фиксированной точкой. Используя схему кодирования смещения наклона, представление является
где V = 35,375.
Двумя ближайшими приближениями к вещественному значению являются Q = 13 и Q = 14:
В любом случае абсолютная ошибка одинаковая:
Для значений с фиксированной точкой в ограниченной области значений это представляет ошибку худшего случая, если используется округление к ближайшему. Если используются другие режимы округления, ошибка в худшем случае может быть в два раза больше:
Расширение точности слова может быть достигнуто с большим количеством бит, но с этим подходом вы сталкиваетесь с практическими ограничениями. Вместо этого необходимо тщательно выбрать тип данных, размер слова и масштабирование, чтобы номера были точно представлены. Округление и заполнение с конечными нулями являются типичными методами, реализованными на процессорах, чтобы справиться с точностью двоичных слов.
Нижний предел, высокий предел и масштабирование только для двоичных точек по умолчанию для поддерживаемых типов данных с фиксированной точкой, обсуждаемое в Binary-Point-Only Scaling, приведены в следующей таблице.
Область значений типов данных с фиксированной точкой и масштабирование по умолчанию
Имя | Тип данных | Низкий предел | Высокий предел | Масштабирование по умолчанию (~ точность) |
---|---|---|---|---|
Целое число без знака |
| 0 |
| |
Целое число со знаком |
|
| ||
Беззнаковая двоичная точка |
| 0 | ||
Подписанная двоичная точка |
| |||
Смещение без знака наклона |
|
| s | |
Смещение наклона со знаком |
| s |
s = Уклон, b = Смещение, ws = WordLength, fl = FractionLength
Точности, область значений значений со знаком и область значений значений без знака для 8-битного обобщенного типа данных с фиксированной точкой с двоичным масштабированием только с точкой перечислены в следующей таблице. Обратите внимание, что первое значение масштабирования (21) представляет двоичную точку, которая не смежна со словом.
Масштабирование | Точность | Область значений значений со знаком (низкий, высокий) | Область значений значений без знака (низкий, высокий) |
---|---|---|---|
21 | 2.0 | -256, 254 | 0, 510 |
20 | 1.0 | -128, 127 | 0, 255 |
2-1 | 0.5 | -64, 63.5 | 0, 127.5 |
2-2 | 0.25 | -32, 31.75 | 0, 63.75 |
2-3 | 0.125 | -16, 15.875 | 0, 31.875 |
2-4 | 0.0625 | -8, 7.9375 | 0, 15.9375 |
2-5 | 0.03125 | -4, 3.96875 | 0, 7.96875 |
2-6 | 0.015625 | -2, 1.984375 | 0, 3.984375 |
2-7 | 0.0078125 | -1, 0.9921875 | 0, 1.9921875 |
2-8 | 0.00390625 | -0.5, 0.49609375 | 0, 0.99609375 |
Точность и области значений значений со знаком и без знака для 8-битного типа данных с фиксированной точкой с использованием масштабирования наклона и смещения перечислены в следующей таблице. Уклон начинается со значения 1.25
с смещением 1.0
для всех склонов. Обратите внимание, что уклон совпадает с точностью.
Уклон | Уклон/точность | Область значений значений со знаком (низкий, высокий) | Область значений значений без знака (низкий, высокий) |
---|---|---|---|
1 | 1.25 | -159, 159.75 | 1, 319.75 |
1 | 0.625 | -79, 80.375 | 1, 160.375 |
1 | 0.3125 | -39, 40.6875 | 1, 80.6875 |
1 | 0.15625 | -19, 20.84375 | 1, 40.84375 |
1 | 0.078125 | -9, 10.921875 | 1, 20.921875 |
1 | 0.0390625 | -4, 5.9609375 | 1, 10.9609375 |
1 | 0.01953125 | -1.5, 3.48046875 | 1, 5.98046875 |
1 | 0.009765625 | -0.25, 2.240234375 | 1, 3.490234375 |
1 | 0.0048828125 | 0.375, 1.6201171875 | 1, 2.2451171875 |