Эффективное умножение фиксированной точки 2K
b = pow2(a,K)
b = pow2(a,K)
возвращает значение a
, переключенного битами K
, где K
является целым числом, и a
и b
являются объектами fi
. Вывод b
всегда имеет тот же размер слова и дробную длину как вход a
.
В вычислениях с фиксированной точкой, переключающих битами K
, эквивалентно и более эффективен, чем, вычисляя b = a *2k.
Если K
будет нецелым числом, функция pow2
будет вокруг него к floor
прежде, чем выполнить вычисление.
Масштабирование a
должно быть эквивалентно бинарному масштабированию только для точки; другими словами, это должно иметь силу 2 наклонов и смещение 0.
a
может быть действительным или комплексным. Если a
является комплексным, pow2
управляет на обоих действительными и комплексными фрагментами a
.
Функция pow2
повинуется свойствам OverflowAction
и RoundingMethod
, сопоставленным с a
. Если повиновение свойству RoundingMethod
, сопоставленному с a
, не важно, попытайтесь использовать функцию bitshift
.
Функция pow2
не поддерживает объекты fi
типа данных Boolean
.
Функция также не поддерживает синтаксис b = pow2(a)
, когда a
является объектом fi
.
В следующем примере 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)
MATLAB® возвращается:
a = 3.1406 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 b = 25.1250 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)
MATLAB возвращается:
a = 3.1406 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 8 b = 0.1953 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 s16,8 pow2(a, 2) ans = 127.99609375 - 8i s16,8