Эффективное умножение с фиксированной точкой на 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
.
The pow2
функция подчиняется OverflowAction
и RoundingMethod
свойства, связанные с a
. Если подчиняться RoundingMethod
свойство, сопоставленное с a
не важно, попробуйте использовать bitshift
функция.
The pow2
функция не поддерживает fi
объекты типа данных Boolean
.
Функция также не поддерживает синтаксис b = pow2(a)
когда a
является fi
объект.
В следующем примере a
является реальным fi
объект, и K
является положительным целым числом.
The 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
- отрицательное целое число.
The 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)