Разделы в этой теме сравнивают 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 Свойствах объектов в Описании свойства. | |
| Можно задать и размер слова и дробную длину получившейся суммы. | |
| Положительное целое число | Размер слова суммы заканчивается когда |
| Положительное целое число | Максимальный размер слова суммы позволил когда |
| Целое число | Дробная длина суммы заканчивается когда |