关于对IQ格式数的一点想法

为什么要使用定点数/IQ格式数:用整数表示小数!!!!!!

IQ格式数:本质上是整数,有可能是int类型、有可能是long类型。

在32位机中,int类型和long类型所占的字节数相等。(这里有误,在TMS320C28x中,int占16bits,long占32bit

使用IQ格式数的目的:加快运算速度。对于不带硬件FPU的单片机,其进行浮点数运算时,速度很慢。

浮点数运算很慢,那就不使用呗,换种运算速度快的方式------->整数运算。

为了和真正的整数区别开来,这种由浮点数转换来的整数就称作为IQ格式数。

好了,至此有了目标:避开浮点数运算,转为整数运算。

具体实现:浮点数转换成IQ格式数通过左移实现,再进行整数乘法,最后将得到的结果通过右移转换成浮点数。

注意:在转换的过程中,可能会存在精度的丢失,小问题,莫要在意。IQ格式数四则计算有具体的要求,不赘述。

采用IQ格式数运算也说明了:浮点数的运算速度 < 整数运算速度 + 转换操作。

那么问题又来了:为啥这两种运算结果是一致的(不考虑精度的丢失及溢出问题)?

  这不废话吗? 在纸上进行数学运算:浮点数运算和整数运算。想想你在这个过程中做的事。

  在这个过程中你考虑了计算机计算时的具体操作了吗?

  浮点数运算和整数运算的结果都是数,在它们运算的过程中,我们并不关心具体细节。只要知道计算机运算出来的结果和我们手工计算的结果是一致的。

  举个例子:1.5 *0.02  

    浮点数运算(假设不存在精度丢失):1.5*0.02 = 0.03

    IQ格式数运算:先将1.5转换成150,0.02转换成2。好了,这下都是整数了,150*2=300。最后将300转换成0.03。

好了,就说这么多。

 

posted @ 2022-09-19 19:12  涧落水寒  阅读(615)  评论(0编辑  收藏  举报