2 のべき乗での乗算を符号付きのビット単位シフトに置換
この例では、2 のべき乗での乗算を符号付きのビット単位シフトに置き換えたコードを生成する方法を示します。ビット単位シフトを含むコードは、2 のべき乗での乗算を含むコードよりも高速に実行されます。
MISRA などのコーディング規約によっては、符号付き整数のビット演算を許可しないものもあります。MISRA C 準拠コードが生成される可能性を高める場合は、2 のべき乗での乗算をビット単位シフトに置換しないでください。
例
2 のべき乗での乗算をビット単位シフトに置換するには、次のモデルを作成します。このモデルでは、[データ型] が int16 の信号が Shift Arithmetic ブロックに入力されています。Shift Arithmetic ブロックの [パラメーター] ダイアログ ボックスで、[シフトするビット] 、 [方向] パラメーターが Left に設定されています。[シフトするビット] 、 [数値] パラメーターが 3 に設定されています。このパラメーターは、値 8、つまり 2 の 3 乗に対応します。

符号付きのビット単位シフトを使用したコードの生成
[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[コード スタイル] タブを選択します。[2 のべき乗での乗算を符号付きのビット単位シフトに置換] パラメーターは既定でオンになっています。
モデルのコードを生成します。
bitwise_multiplication.c ファイルの bitwise_multiplication ステップ関数に、次のコードが含まれています。
bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 << 3);
符号付き整数 bitwise_multiplication_U.In1 が左に 3 ビット分シフトされます。
2 のべき乗での乗算を使用したコードの生成
[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[コード スタイル] タブを選択します。
[2 のべき乗での乗算を符号付きのビット単位シフトに置換] パラメーターをクリアします。
モデルのコードを生成します。
bitwise_multiplication.c ファイルの bitwise_multiplication ステップ関数に、次のコードが含まれています。
bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 * 8);
符号付き整数 bitwise_multiplication_U.In1 が 8 で乗算されます。