小数长度大于字长
当定点数的绝对值小于 1 并且包含前导零时,就会出现小数长度大于该定点数的字长的情况。
x = fi(.0234,1,8)
x = 0.0234 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 12
查看 x
的二进制表示形式。
disp(bin(x))
01100000
由于 x
的小数长度比字长要长 4 位,因此在二进制小数点后和存储整数的二进制表示之前有 4 个隐式前导零。
将具有四个前导零的 x
的二进制表示形式从二进制转换为十进制,并根据小数长度调整此值。
bin2dec('000001100000')*2^(-12)
ans = 0.0234
结果是 x
的真实值。
您也可以使用方程 求真实值。
首先求 x
的存储整数。
Q = storedInteger(x)
Q = 96
使用存储整数求 x
的真实值。
real_world_value = double(Q) * 2^-x.FractionLength
real_world_value = 0.0234