В этом примере показано, как создать код, который заменяет умножение на степени двух со знаком побитовых сдвигов. Код, содержащий побитовые сдвиги, выполняется быстрее, чем код, содержащий умножение на степени два.
Некоторые стандарты кодирования, такие как MISRA, не допускают побитовых операций над подписанными целыми числами. Если вы хотите увеличить шансы на создание кода, совместимого с MISRA C, не заменяйте умножение на степени два побитовыми сдвигами.
Чтобы заменить умножение на степени двух побитовыми сдвигами, создайте следующую модель. В этой модели сигнал типа Data
int16 подает в арифметический блок Shift. В диалоговом окне «Параметры арифметического блока сдвига» параметру «Биты для сдвига» > «Направление» присвоено значение Left. Параметр Bits to shift > Number имеет значение 3. Этот параметр соответствует значению 8 или возведению 2 в степень 3.

Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters) и перейдите на вкладку Стиль кода (Code Style). Параметр Заменить умножения на степени двух со знаком побитовых сдвигов включен по умолчанию.
Создайте код для модели.
В bitwise_multiplication.c файл, bitwise_multiplication пошаговая функция содержит следующий код:
bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 << 3);
Целое число со знаком, bitwise_multiplication_U.In1, сдвигается на три бита влево.
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters) и перейдите на вкладку Стиль кода (Code Style).
Снимите флажок Заменить умножение на степени двух со знаком параметра побитовых сдвигов.
Создайте код для модели.
В bitwise_multiplication.c файл, bitwise_multiplication пошаговая функция содержит следующий код:
bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 * 8);
Целое число со знаком bitwise_multiplication_U.In1 умножается на 8.