Этот пример показывает, как выполнить двоичную точку, масштабирующуюся в FI
.
a = fi(v,s,w,f)
возвращает fi
со значением v
, s
со знаком, размер слова w
и дробная длина f
.
Если s
верен (подписал) продвижение, или старший значащий бит (MSB) в получившемся fi всегда является знаковым битом.
Дробной длиной f
является масштабирующийся 2^(-f)
.
Например, создайте 8-битный длинный fi
со знаком со значением 0,5 и масштабированием 2^ (-7):
a = fi(0.5,true,8,7)
a = 0.5000 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 7
Дробная длина или масштабирование определяют положение двоичной точки в объекте fi
.
Когда дробная длина, f
положителен и меньше, чем размер слова, двоичная точка, находится места f
слева от младшего значащего бита (LSB) и в слове.
Например, в 3-битном fi
со знаком с дробной длиной 1 и значение-0.5, двоичная точка находится 1 место слева от LSB. В этом случае каждый бит установлен в 1
, и двоичным эквивалентом fi
с его двоичной точкой является 11.1
.
Значение реального мира-0.5 получено путем умножения каждого бита его масштабным коэффициентом, начиная с LSB и работы до MSB со знаком.
(1*2^-1) + (1*2^0) +(-1*2^1) = -0.5
storedInteger(a)
возвращает сохраненное немасштабированное целочисленное значение со знаком -1
.
(1*2^0) + (1*2^1) +(-1*2^2) = -1
a = fi(-0.5,true,3,1) bin(a) storedInteger(a)
a = -0.5000 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 3 FractionLength: 1 ans = '111' ans = int8 -1
Когда дробная длина f
положителен и больше, чем размер слова, двоичная точка находится места f
слева от LSB и вне слова.
Например, двоичным эквивалентом 3-битного слова со знаком с дробной длиной 4 и значением-0.0625 является ._111
Здесь, _
в ._111
обозначает неиспользованный бит, который не является частью 3-битного слова. Первый 1
после _
является MSB или знаковым битом.
Значение реального мира-0.0625 вычисляется можно следующим образом (LSB к MSB).
(1*2^-4) + (1*2^-3) + (-1*2^-2) = -0.0625
интервал (b) возвратит 111
в подсказке MATLAB® и storedInteger(b) = -1
b = fi(-0.0625,true,3,4) bin(b) storedInteger(b)
b = -0.0625 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 3 FractionLength: 4 ans = '111' ans = int8 -1
Когда дробная длина, f
отрицателен двоичная точка, находится места f
справа от LSB и вне физического слова.
Например, в c = fi(-4,true,3,-2)
двоичная точка находится 2 места справа от LSB 111__.
. Здесь два права, большинство пробелов является неиспользованными битами, которые не являются частью 3-битного слова. Право большая часть 1
является LSB и ведущим 1
, является знаковым битом.
Значение реального мира-4 получено путем умножения каждого бита его масштабным коэффициентом 2^(-f)
, т.е. 2(-(-2)) = 2^(2)
для LSB, и затем добавления продуктов вместе.
(1*2^2) + (1*2^3) +(-1*2^4) = -4
bin(c)
и storedInteger(c)
все еще дадут 111
и -1
как в предыдущих двух примерах.
c = fi(-4,true,3,-2) bin(c) storedInteger(c)
c = -4 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 3 FractionLength: -2 ans = '111' ans = int8 -1
В этом примере мы создаем 3-битный fi
со знаком, где дробная длина установлена автоматически в зависимости от значения, которое fi
, как предполагается, содержит. Получившийся fi
имеет значение 6 с wordlength 3 битов и дробной длиной-1. Здесь двоичная точка является 1 местом справа от LSB: 011_.
. _
является снова неиспользованным битом и первым 1
, прежде чем _
будет LSB. Ведущий 1
является знаковым битом.
Значение реального мира (6) получено можно следующим образом:
(1*2^1) + (1*2^2) + (-0*2^3) = 6
bin(d)
и storedInteger(d)
дадут 011
и 3
соответственно.
d = fi(5,true,3) bin(d) storedInteger(d)
d = 6 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 3 FractionLength: -1 ans = '011' ans = int8 3
Это - интерактивный пример, который позволяет пользователю изменять дробную длину 3-битного номера фиксированной точки путем перемещения двоичной точки с помощью ползунка. Дробная длина может отличаться от-3 до 5, и пользователь может изменить значение 3 битов к '0' или '1' или для подписанных или для чисел без знака.
"Масштабные коэффициенты" выше 3 битов отображают масштабирование или вес, который каждый бит дан для заданной и дробной длины со знаком. Код fi
, двойная точность реальное значение и атрибуты фиксированной точки также отображен.
Введите fibinscaling в посдказке MATLAB, чтобы запустить этот пример.
%#ok<*NOPTS,*NASGU>