Операции с фиксированной точкой в диаграммах Stateflow

Числа с фиксированной точкой используют целые числа и целочисленную арифметику, чтобы аппроксимировать вещественные числа. Они позволяют вам выполнять расчеты с использованием реальных чисел, не требуя поддержки с плавающей точкой в базовом оборудовании системы. Для получения дополнительной информации смотрите Данные с Фиксированной Точкой в Диаграммах Stateflow.

Арифметические операции для данных с фиксированной точкой

Общее уравнение для двоичной арифметической операции между операндами с фиксированной точкой

c = a <op> b
где a и b являются номерами с фиксированной точкой и <op> относится к сложению, вычитанию, умножению или делению. Результатом операции является номер с фиксированной точкой c формы

<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0>.

Тип с фиксированной точкой для c определяет S уклона c, смещение B cи количество бит, используемых для хранения квантованного целого числа Q c. Для каждой арифметической операции в этой таблице перечислено значение квантованного целого числа Q c в терминах значений операндов (a и b) и тип с фиксированной точкой для c.

ОперацияМасштабирование уклона и смещенияМасштабирование в двоичных точках

Сложение

c = a+b<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> + (S b/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> + (B a + <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>) / <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> + (S b/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0>)

Вычитание

c = a-b<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> – (S b/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> – (B a<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>) / <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> – (S b/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0>)

Умножение

c = a*b<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a<reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> + (B a<reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> + (B b<reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0> + (B a<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>) / <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a<reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>) <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>)

Деление

c = a/b<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a<reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0>) / (S c(S b<reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0>)) – (B c/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>))<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((S a/ (S b<reservedrangesplaceholder1> <reservedrangesplaceholder0>)) <reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>)

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

Примечание

Результат арифметической операции зависит от метода округления, который вычисляет значение квантованного целого числа Q c. Для получения дополнительной информации см. раздел Операции преобразования.

Реляционные операции для данных с фиксированной точкой

Можно использовать реляционные операции для сравнения данных с фиксированной точкой. Сравнение значений с фиксированной точкой различных типов может привести к неожиданным результатам, потому что каждый операнд преобразуется в общий тип для сравнения. Из-за ошибок округления или переполнения во время преобразования некоторые значения, которые, по-видимому, равны, не равны числам с фиксированной точкой.

Например, предположим, что a и b представление реального значения V = 2.2 в двух разных схемах кодирования с фиксированной точкой:

  • a - номер с фиксированной точкой с S уклона a = 0,3 и смещение B a = 0.1. Квантованное целое число для a является:

    <reservedrangesplaceholder1> <reservedrangesplaceholder0> = (V<reservedrangesplaceholder1> <reservedrangesplaceholder0>) / <reservedrangesplaceholder1> <reservedrangesplaceholder0> = (2.2 – 0.1)/0.3 = 7.

  • b - номер с фиксированной точкой с S уклона b = 0,7 и смещение B b = 0.1. Квантованное целое число для b является:

    <reservedrangesplaceholder1> <reservedrangesplaceholder0> = (V<reservedrangesplaceholder1> <reservedrangesplaceholder0>) / <reservedrangesplaceholder1> <reservedrangesplaceholder0> = (2.2 – 0.1)/0.7 = 3.

Чтобы сравнить эти значения, график сначала преобразует их в общий тип с фиксированной точкой с S наклона comp = 1.06811· 10–5<reservedrangesplaceholder1> <reservedrangesplaceholder0>/28087  <reservedrangesplaceholder1> <reservedrangesplaceholder0> · 2–16 и смещение B comp = 0,1. (В этом случае наклон S comp возникает из приблизительного значения S a/ <reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0.3/0.7 ≈ 28087 · 2–16.) В этой общей схеме кодирования a и b соответствуют этим квантованным целым числам:

<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>/ S comp = Q a(S a/ S comp) ≈ 7 ⨉ 28087 = 196609

<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>/ S comp = Q b(S b/ S comp) ≈ 3 ⨉ 216 = 196608.

После преобразования квантованные целые числа отличаются. Хотя a и b представляют то же самое значение реального мира, они не равны числам с фиксированной точкой.

Примечание

В графиках, которые используют C в качестве языка действий, сравнения операндов с фиксированной точкой с несоответствующими смещениями не поддерживаются.

Логические операции для данных с фиксированной точкой

В логической операции операнд с фиксированной точкой a интерпретируется как false если он соответствует реальному значению для нуля в типе a с фиксированной точкой. В противном случае a интерпретируется как true.

  • В графиках, которые используют MATLAB® как язык действий, использование a в логической операции эквивалентно выражению a ~= cast(0,'like',a).

  • В графиках, которые используют C в качестве языка действий, используя a в логической операции эквивалентно выражению a != 0c, где 0c является контекстно-зависимой константой с фиксированной точкой. См. «Контекстно-чувствительные константы с фиксированной точкой».

Например, предположим, что a - номер с фиксированной точкой с наклоном S a = 0,25 и смещение B a = 5.1. Использование a в логической операции эквивалентно проверке, Q ли квантованное целое число a удовлетворяет условию

<reservedrangesplaceholder1> <reservedrangesplaceholder0> = round ((0 - B a) / <reservedrangesplaceholder1> <reservedrangesplaceholder0>) = round (-5,1/0,25) = round (-20,4) = -20.

Поэтому a эквивалентно false когда его реальное приближение

<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0.25 ⨉ ( –20) + 5.1 = 0.1.

Правила продвижения для операций с фиксированной точкой

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

Правила продвижения с фиксированной точкой определяют тип результата для операции c = a <op> b путем выбора S уклона c, смещение B cи количество бит wc используется для хранения квантованного целого числа Q c. Эти параметры зависят от фиксированных точек операндов a и b, операции <op> выполняется, и свойство языка действий для графика.

  • На графике, который использует MATLAB в качестве языка действий, вы управляете правилами продвижения с фиксированной точкой через свойства с фиксированной точкой для диаграммы. См. Раздел «Свойств фиксированной точки»

    • Если вы задаете MATLAB Chart fimath свойство к Same as MATLABЗатем арифметические операции следуют правилам продвижения с фиксированной точкой по умолчанию для MATLAB. См. «Выполнение арифметики с фиксированной точкой» (Fixed-Point Designer).

    • Если вы задаете график fimath объект с SumMode и ProductMode установлено на SpecifyPrecisionзатем можно явным образом задать размер слова, наклон и смещение для всех сумм и продуктов. См. «Fimath Object Свойств» (Fixed-Point Designer).

  • На графике, который использует C в качестве языка действий, правила продвижения с фиксированной точкой определяют тип для промежуточного значения результата. Это промежуточное значение затем приведено к типу, который вы задаете для c.

    Для всех арифметических операций количество бит по умолчанию wc используется для хранения квантованного целого числа, которое является большим значением между:

    • Максимальное количество бит в типах операндов (wa и wb).

    • Количество бит в целочисленном размере слова для целевой машины (wint).

    Чтобы задать значение wintоткройте диалоговое окно Model Configuration Parameters. На панели Hardware Implementation выберите Custom Processor из раскрывающегося списка Device vendor и введите целевой целочисленный размер слова в поле int. Для получения дополнительной информации смотрите Панель аппаратной реализации (Simulink).

    Можно избежать переполнения и улучшить точность в операциях с плавающей точкой с помощью операции специального назначения формы c: = a <op> b. Операция специального назначения не соответствует правилам продвижения с фиксированной точкой. Вместо этого график определяет результат операции с помощью типа, который вы задаете для c. Смотрите Переопределение промоакции с фиксированной точкой в графиках С.

Сложение и вычитание

По умолчанию графики, которые используют MATLAB в качестве языка действий, поддерживают сложение и вычитание только данных с фиксированной точкой, заданных путем двоичного масштабирования точек. Если любой из операндов является подписанным номером с фиксированной точкой, то результат также подписывается. Выбор размера слова вмещает целое число и часть дроби каждого операнда в дополнение к возможному биту переноса. Длина дроби результата равна длине дроби наиболее точного операнда. Чтобы выполнить сложение и вычитание данных с фиксированной точкой, заданных при помощи наклона, который не является целочисленной степенью двойки или ненулевым смещением, задайте график fimath объект с SumMode установлено на SpecifyPrecision.

Графики, которые используют C в качестве языка действий, поддерживают сложение и вычитание для операндов всех типов данных с фиксированной точкой. Результатом является подписанный номер с фиксированной точкой, только если оба операнда подписаны. Смешение подписанных и неподписанных операндов может привести к неожиданным результатам и не рекомендуется. Наклон результата равен наклону наименее точного операнда. Чтобы упростить вычисления и получить эффективный код, смещения двух входов складываются для операции сложения и вычитаются для операции вычитания.

 abMATLAB как язык действийC как язык действий
Знак<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>||<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> && <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Размер слова<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a<reservedrangesplaceholder1> <reservedrangesplaceholder0>, <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>) + макс (f a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>) + 1<reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Длина дроби<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (f a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = мин (f a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Наклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fa при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fb при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = мин (S a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (S a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Уклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (0 при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> (0 при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0> для сложения или B c = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> для вычитания

Умножение

По умолчанию графики, которые используют MATLAB в качестве языка действий, поддерживают умножение только на данных с фиксированной точкой, заданных путем двоичного масштабирования точек. Если любой из операндов является подписанным номером с фиксированной точкой, то результат также подписывается. Для полный точный продукт требуется размер слова, равная сумме размеров слова операндов. Длина дроби продукта является суммой длин дробей операндов. Чтобы выполнить умножение на данные с фиксированной точкой, заданное использованием наклона, который не является целочисленной степенью двойки или ненулевым смещением, задайте график fimath объект с ProductMode установлено на SpecifyPrecision.

Графики, которые используют C в качестве языка действий, поддерживают умножение только на операндах данных с фиксированной точкой, заданных ненулевыми смещениями. Результатом является подписанный номер с фиксированной точкой, только если оба операнда подписаны. Смешение подписанных и неподписанных операндов может привести к неожиданным результатам и не рекомендуется. Наклон произведения является продуктом склонов операндов.

 abMATLAB как язык действийC как язык действий
Знак<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>||<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> && <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Размер слова<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Длина дроби<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> + <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Наклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fa при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fb при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>
Уклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0

Деление

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

Графики, которые используют C в качестве языка действий поддержки деления для операндов данных с фиксированной точкой, заданных ненулевыми смещениями. Результатом является подписанный номер с фиксированной точкой, только если оба операнда подписаны. Смешение подписанных и неподписанных операндов может привести к неожиданным результатам и не рекомендуется. Наклон фактора является частным из склонов операндов.

 abMATLAB как язык действийC как язык действий
Знак<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>||<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0> && <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Размер слова<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Длина дроби<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0>
Наклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fa при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fb при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>/ <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Уклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0<reservedrangesplaceholder1> <reservedrangesplaceholder0> = 0

Унарный минус

Единственная унарная операция, которая требует продвижения своего типа результата, является унарной операцией минус c = -a. Принятие отрицательного значения неподписанного номера с фиксированной точкой может привести к неожиданным результатам и не рекомендуется. Размер слова результата зависит от свойства языка действий графика. Наклон результата равен наклону операнда. Смещение типа результата является отрицательным смещением операнда.

 aMATLAB как язык действийC как язык действий
Знак<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Размер слова<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = max (w a, <reservedrangesplaceholder1> <reservedrangesplaceholder0>)
Длина дроби<reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Наклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (2-fa при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = <reservedrangesplaceholder1> <reservedrangesplaceholder0>
Уклон<reservedrangesplaceholder1> <reservedrangesplaceholder0> (0 при использовании масштабирования с двоичной точкой)<reservedrangesplaceholder1> <reservedrangesplaceholder0> = – <reservedrangesplaceholder1> <reservedrangesplaceholder0><reservedrangesplaceholder1> <reservedrangesplaceholder0> = – <reservedrangesplaceholder1> <reservedrangesplaceholder0>

Арифметика со смешанными числовыми типами

В этой таблице представлены правила продвижения с фиксированной точкой для двоичной операции между номером с фиксированной точкой и операндом другого числового типа.

Численный тип второго операндаMATLAB как язык действийC как язык действий

Числа с плавающей запятой:

  • single

  • double

Перед выполнением операции график переводит операнд с плавающей точкой в число с фиксированной точкой. Тип, используемый для приведения, зависит от операции:

  • Операции сложения и вычитания используют тот же тип, что и операнд с фиксированной точкой.

  • Операции умножения используют тот же размер слова и сигнальность, что и операнд с фиксированной точкой, и лучшую длину дроби точности для результата с фиксированной точкой.

Результатом операции является номер с фиксированной точкой.

Перед выполнением операции график переводит операнд с фиксированной точкой в число с плавающей запятой. Операция литья использует тот же тип (single или double) как операнд с плавающей точкой. Результатом операции является число с плавающей запятой.

Целые числа:

  • int64

  • int32

  • int16

  • int8

  • uint64

  • uint32

  • uint16

  • uint8

Целочисленный операнд рассматривается как число с фиксированной точкой с тем же размером слова и сигнальностью с наклоном S = 1 и смещением B = 0. Результатом операции является номер с фиксированной точкой.

Целочисленный операнд рассматривается как число с фиксированной точкой с тем же размером слова и сигнальностью с наклоном S = 1 и смещением B = 0. Результатом операции является номер с фиксированной точкой.

Похожие темы