pow2
固定小数点と 2K の効率的な乗算
構文
b = pow2(a,K)
説明
b = pow2(a,K) は a を K ビットだけシフトした値を返します。ここで K は整数、a と b は fi オブジェクトです。出力 b の語長と小数部の長さは常に入力 a と同じものになります。
メモ
固定小数点演算では、K ビットだけシフトすることは、b = a*2K を計算することと等価か、またはそれ以上に効率的です。
K が非整数の場合、計算を実行する前に、関数 pow2 は K を floor に丸めます。
a のスケーリングは 2 進小数点のみのスケーリングと等価でなければなりません。つまり、傾き 2 のべき乗とバイアス 0 をもたなければなりません。
a は、実数または複素数です。a が複素数の場合、pow2 は a の実数部と虚数部の両方で演算します。
関数 pow2 は a に関連付けられた OverflowAction プロパティと RoundingMethod プロパティに従います。a に関連付けられた RoundingMethod プロパティに従う必要がない場合は、関数 bitshift を使用してみてください。
関数 pow2 はデータ型が Boolean の fi オブジェクトはサポートしていません。
a が fi オブジェクトの場合、この関数は構文 b = pow2(a) もサポートしません。
例
次の例では、a は実数値の fi オブジェクト、K は正の整数です。
関数 pow2 は a のビットを左に 3 つシフトし、a に 23 を効率よく乗算します。
a = fi(pi,1,16,8) b = pow2(a,3) binary_a = bin(a) binary_b = bin(b)
a =
3.140625
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
25.125
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
binary_a =
'0000001100100100'
binary_b =
'0001100100100000'次の例では、a は実数値の fi オブジェクト、K は負の整数です。
関数 pow2 は a のビットを右に 4 つシフトし、a に 2–4 を効率よく乗算します。
a = fi(pi,1,16,8) b = pow2(a,-4) binary_a = bin(a) binary_b = bin(b)
a =
3.140625
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
0.1953125
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
binary_a =
'0000001100100100'
binary_b =
'0000000000110010'次の例では pow2 を複素数の fi オブジェクトに適用します。
format long g P = fipref('NumericTypeDisplay', 'short'); a = fi(57 - 2i, 1, 16, 8)
a =
57 - 2i
numerictype(1,16,8)pow2(a,2)
ans =
127.99609375 - 8i
numerictype(1,16,8)拡張機能
バージョン履歴
R2006a より前に導入