IQ格式数:本质上是整数,有可能是int类型、有可能是long类型。
在32位机中,int类型和long类型所占的字节数相等。
使用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。
好了,就说这么多。
标签:转换成,运算,IQ,浮点数,整数,想法,格式 From: https://www.cnblogs.com/xing-2/p/16708737.html