Main Content

小数长度大于字长

当定点数的绝对值小于 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 的真实值。

您也可以使用方程 Real World Value = Stored Integer Value × 2Fraction Length 求真实值。

首先求 x 的存储整数。

Q = storedInteger(x)
Q =

   96

使用存储整数求 x 的真实值。

real_world_value = double(Q) * 2^-x.FractionLength
real_world_value =

    0.0234

另请参阅