メインコンテンツ

2 のべき乗での乗算を符号付きのビット単位シフトに置換

この例では、2 のべき乗での乗算を符号付きのビット単位シフトに置き換えたコードを生成する方法を示します。ビット単位シフトを含むコードは、2 のべき乗での乗算を含むコードよりも高速に実行されます。

MISRA などのコーディング規約によっては、符号付き整数のビット演算を許可しないものもあります。MISRA C 準拠コードが生成される可能性を高める場合は、2 のべき乗での乗算をビット単位シフトに置換しないでください。

2 のべき乗での乗算をビット単位シフトに置換するには、次のモデルを作成します。このモデルでは、[データ型]int16 の信号が Shift Arithmetic ブロックに入力されています。Shift Arithmetic ブロックの [パラメーター] ダイアログ ボックスで、[シフトするビット][方向] パラメーターが Left に設定されています。[シフトするビット][数値] パラメーターが 3 に設定されています。このパラメーターは、値 8、つまり 2 の 3 乗に対応します。

符号付きのビット単位シフトを使用したコードの生成

  1. [モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[コード スタイル] タブを選択します。[2 のべき乗での乗算を符号付きのビット単位シフトに置換] パラメーターは既定でオンになっています。

  2. モデルのコードを生成します。

bitwise_multiplication.c ファイルの bitwise_multiplication ステップ関数に、次のコードが含まれています。

bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 << 3);

符号付き整数 bitwise_multiplication_U.In1 が左に 3 ビット分シフトされます。

2 のべき乗での乗算を使用したコードの生成

  1. [モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[コード スタイル] タブを選択します。

  2. [2 のべき乗での乗算を符号付きのビット単位シフトに置換] パラメーターをクリアします。

  3. モデルのコードを生成します。

bitwise_multiplication.c ファイルの bitwise_multiplication ステップ関数に、次のコードが含まれています。

bitwise_multiplication_Y.Out1 = (int16_T)(bitwise_multiplication_U.In1 * 8);

符号付き整数 bitwise_multiplication_U.In18 で乗算されます。

参考

トピック