Отрицательная длина дроби возникает, когда входное значение 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