Отрицательная длина дроби возникает, когда входное значение fi объект содержит конечные нули перед десятичной точкой. Для примера,
x = fi(16000,1,8)
задает знаковое число с фиксированной точкой с размером слова 8 бит и лучшей точностью длины дроби.
x =
16000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: -7Просмотрите двоичное представление x.
disp(bin(x))
01111101
В конце этого числа перед двоичной точкой семь неявных нулей, потому что длина дроби x является -7.
Преобразуйте из двоичных в десятичные числа двоичное представление x с семью нулевыми битами, добавленными в конец.
bin2dec('011111010000000')ans =
16000Результатом является реальное мировое значение x.
Вы также можете найти значение реального мира, используя уравнение .
Начните с нахождения сохраненного целого числа x.
Q = storedInteger(x)
Q = 125
Используйте сохраненное целое число, чтобы найти значение реального мира x.
real_world_value = double(Q) * 2^-x.FractionLength
real_world_value =
16000