
上QQ阅读APP看书,第一时间看更新
2.4.1 定点—浮点数据的转换
1.浮点数转定点数
实现定点数和浮点数之间的转换,只需规定浮点数的整数位和小数位。以32位定点数为例,设转换因子为Q(即小数位数为Q),整数位数为31-Q(有符号数的情况),则定点数与浮点数的换算关系为定点数=浮点数×2Q。
例如,浮点数-2.0转换到定点数(Q=30):-2×230=-2147483648。
2.定点数转浮点数
32位有符号数的范围是-2147483648~2147483647。将2147483647转换为浮点数为2147483647/230,即1.999999999。
这表明Q30格式下,所能表示的最大浮点数为1.999999999(并不等于2),存在1E-9的误差。
表2-3所示为Q0~Q30对应的数据范围和分辨率。可借助MATLAB求取它们之间的转换,即在命令窗口中输入:

表2-3 Q0~Q30对应的数据范围和分辨率

例如,将5.0转换成Q格式,只能从iq1~iq28当中进行选择,而不能转换为iq29和iq30。因为iq29能转换的最大值为3.999999998,所以进行Q格式定标时要对数的范围做一下估计,也正是因为这个原因,诸如IQNsin、IQNcos、IQNatan2、IQNatan2PU、IQatan的三角函数不能采用Q30格式。