Разделы в этой теме сравнивают объект fi
с типами данных с фиксированной точкой и операциями в C. В этих разделах информация о ANSI® C адаптируется от Сэмюэля П. Харбисона и Гая Л. Стила младшего, C: Справочник, 3-й редактор, Prentice Hall, 1991.
Этот раздел сравнивает числовую область значений целочисленных типов данных fi
к минимальной числовой области значений целочисленных типов данных C, принимая Дополнительное представление Туо.
Много компиляторов C поддерживают дополнительное представление two типов данных целого числа со знаком. Следующая таблица показывает минимальные области значений целочисленных типов данных C с помощью дополнительного представления two. Целочисленные области значений могут быть больше, чем или равняться показанным областям значений, но не могут быть меньшими. Область значений long
должна быть больше, чем или равной области значений int
, который должен быть больше, чем или равным области значений short
.
В дополнительном представлении two целое число со знаком с битами n имеет область значений от к , включительно. Беззнаковое целое с n битами имеет диапазон от 0 до , включительно. Отрицательная сторона области значений имеет еще одно значение, чем положительная сторона, и нуль представлен исключительно.
Целочисленный тип | Минимум | Максимум |
---|---|---|
| –128 | 127 |
| 0 | 255 |
| –32,768 | 32,767 |
| 0 | 65,535 |
| –32,768 | 32,767 |
| 0 | 65,535 |
| –2,147,483,648 | 2,147,483,647 |
| 0 | 4,294,967,295 |
В следующей таблице перечислены числовые области значений целочисленных типов данных объекта fi
, в частности эквивалентные целочисленным типам данных C. Области значений являются достаточно большими, чтобы разместить дополнительное представление two, которое является единственным бинарным методом кодирования со знаком, поддержанным программным обеспечением Fixed-Point Designer™.
Конструктор | Со знаком | Размер слова | Дробная длина | Минимум | Максимум | Самый близкий ANSI C эквивалентный |
---|---|---|---|---|---|---|
| Да | n | 0 | Не применяется | ||
| Нет | n | 0 | 0 | Не применяется | |
| Да | 8 | 0 | –128 | 127 |
|
| Нет | 8 | 0 | 0 | 255 |
|
| Да | 16 | 0 | –32,768 | 32,767 |
|
| Нет | 16 | 0 | 0 | 65,535 |
|
| Да | 32 | 0 | –2,147,483,648 | 2,147,483,647 |
|
| Нет | 32 | 0 | 0 | 4,294,967,295 |
|
Унарные преобразования диктуют, ли и как один операнд преобразован, прежде чем операция выполняется. В этом разделе рассматриваются унарные преобразования в ANSI C и объектов fi
.
Унарные преобразования в ANSI C автоматически применяются к операндам унарного !
, – ~, и операторы *
, и бинарного <<
и операторов >>
, согласно следующей таблице:
Исходный тип операнда | ANSI C преобразование |
---|---|
|
|
|
|
|
|
Массив T | Указатель на T |
Функция, возвращающаяся T | Указатель на функцию, возвращающуюся T |
1If вводят int
, не может представлять все значения исходного типа данных без переполнения, конвертированным типом является unsigned int
.
Следующая таблица показывает fi
унарные преобразования:
C оператор | Эквивалентный fi | Преобразование fi |
---|---|---|
| ~ | Результатом является |
~ |
| Результатом является тот же числовой тип как операнд. |
| Никакой эквивалент | Не применяется |
|
| Результатом является тот же числовой тип как операнд. Круглым режимом всегда является |
|
| Результатом является тот же числовой тип как операнд. Круглым режимом всегда является |
|
| Результатом является тот же числовой тип как операнд. |
|
| Результатом является тот же числовой тип как операнд. Режиму переполнения повинуются. Например, переполнение может произойти, когда вы инвертируете |
В этом разделе описываются преобразования, которые происходят, когда операнды бинарного оператора являются различными типами данных.
В ANSI C, операнды бинарного оператора должны иметь тот же тип. Если они отличаются, каждый преобразован в тип другого согласно первому применимому преобразованию в следующей таблице:
Тип одного операнда | Тип другого операнда | ANSI C преобразование |
---|---|---|
| Любой |
|
| Любой |
|
| Любой |
|
| Любой |
|
|
|
|
|
|
|
|
|
|
|
|
|
1Type long
только используется, если он может представлять все значения типа unsigned
.
Когда один из операндов бинарного оператора (+
, – *
, .*
) является объектом fi
, и другой MATLAB® встроенный числовой тип, затем non-fi
операнд преобразован в объект fi
, прежде чем операция будет выполнена, согласно следующей таблице:
Тип одного операнда | Тип другого операнда | Свойства Другого Операнда После Преобразования в Объект fi |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Следующие разделы выдерживают сравнение, как указатель программного обеспечения ANSI C и Fixed-Point Designer переполняется.
В ANSI C, результатом операций целого числа со знаком является любое значение, производится машинной командой, используемой, чтобы реализовать операцию. Поэтому ANSI C не имеет никаких правил для обработки переполнения целого числа со знаком.
Результаты переполнения беззнаковых целых чисел переносятся в ANSI C.
Сложение и умножение с fi
возражают результатам урожая, которые могут быть точно представлены объектом fi
до размеров слова 65 535 битов или доступной памяти на вашей машине. Это не верно для деления, однако, потому что много отношений приводят к бесконечным двоичным выражениям. Можно выполнить деление с объектами fi
с помощью функции divide
, которая требует, чтобы вы явным образом задали числовой тип результата.
Условия, при которых объект fi
переполняется и результаты, затем приведенные, определяются связанным объектом fimath
. Можно задать определенные характеристики переполнения отдельно за суммы (включая различия) и продукты. Обратитесь к следующей таблице:
Свойства объектов fimath, Связанные, чтобы Переполнить Обработки | Значение свойства | Описание |
---|---|---|
|
| Переполнение насыщается к максимальному или минимальному значению в области значений. |
| Переполнение переносит использование арифметика по модулю, если без знака, дополнительный перенос two, если подписано. | |
|
| Результаты полной точности сохранены. Переполнение не происходит. Ошибка выдана, если получившийся размер слова больше, чем Правила для вычисления получившегося слова продукта и дробных длин даны в fimath Свойствах объектов в Описании свойства. |
| Младшие значащие биты продукта сохранены. Полная точность сохранена, но переполнение возможно. Это поведение моделирует целочисленные операции языка C. Свойство Правило для вычисления получившейся длины части продукта дано в fimath Свойствах объектов в Описании свойства. | |
| Старшие значащие биты продукта сохранены. Переполнение предотвращено, но точность может быть потеряна. Свойство Правило для вычисления получившейся длины части продукта дано в fimath Свойствах объектов в Описании свойства. | |
| Можно задать и размер слова и дробную длину получившегося продукта. | |
| Положительное целое число | Размер слова продукта заканчивается, когда |
| Положительное целое число | Максимальный размер слова продукта позволил, когда |
| Целое число | Дробная длина продукта заканчивается, когда |
|
| Результаты полной точности сохранены. Переполнение не происходит. Ошибка выдана, если получившийся размер слова больше, чем Правила для вычисления получившегося слова суммы и дробных длин даны в fimath Свойствах объектов в Описании свойства. |
| Младшие значащие биты суммы сохранены. Полная точность сохранена, но переполнение возможно. Это поведение моделирует целочисленные операции языка C. Свойство Правило для вычисления получившейся длины части суммы дано в fimath Свойствах объектов в Описании свойства. | |
| Старшие значащие биты суммы сохранены. Переполнение предотвращено, но точность может быть потеряна. Свойство Правило для вычисления получившейся длины части суммы дано в fimath Свойствах объектов в Описании свойства. | |
| Можно задать и размер слова и дробную длину получившейся суммы. | |
| Положительное целое число | Размер слова суммы заканчивается, когда |
| Положительное целое число | Максимальный размер слова суммы позволил, когда |
| Целое число | Дробная длина суммы заканчивается, когда |