TI中文支持网
TI专业的中文技术问题搜集分享网站

关于IQmath中IQ定标的一些疑问

IQmath中有这样一段定义 #define   _IQ16(A)      (long) ((A) * 65536.0L) 假设以2^16为例
个人理解,C2000系列处理器不支持浮点运算,需要将小数部分进行转化,所以有了IQ定标,我没有明白的是,一个小数为何要乘以2^16,而不是像10000这样的数字?
假设A=0.03,A*65536=1966.08,再强制转换成long型,就成了1966,丢失了小数部分,相当于精度变差
但是如果A*10000=300,就没有了丢失数据的成分
IQ定标为何要乘以2的几次幂而不是乘以10000或者类似于1后面好多零这样的数据呢?难道是乘以2的几次幂花费的时间比乘以10000所用的时间少?求指导

mangui zhang:

定标主要以数的小数点后面位数为主   看具体位数是多少  然后定标Q**

 

IQmath中有这样一段定义 #define   _IQ16(A)      (long) ((A) * 65536.0L) 假设以2^16为例
个人理解,C2000系列处理器不支持浮点运算,需要将小数部分进行转化,所以有了IQ定标,我没有明白的是,一个小数为何要乘以2^16,而不是像10000这样的数字?
假设A=0.03,A*65536=1966.08,再强制转换成long型,就成了1966,丢失了小数部分,相当于精度变差
但是如果A*10000=300,就没有了丢失数据的成分
IQ定标为何要乘以2的几次幂而不是乘以10000或者类似于1后面好多零这样的数据呢?难道是乘以2的几次幂花费的时间比乘以10000所用的时间少?求指导

Tao Li5:

回复 mangui zhang:

为何不乘以1000这样的数字来定标呢?

IQmath中有这样一段定义 #define   _IQ16(A)      (long) ((A) * 65536.0L) 假设以2^16为例
个人理解,C2000系列处理器不支持浮点运算,需要将小数部分进行转化,所以有了IQ定标,我没有明白的是,一个小数为何要乘以2^16,而不是像10000这样的数字?
假设A=0.03,A*65536=1966.08,再强制转换成long型,就成了1966,丢失了小数部分,相当于精度变差
但是如果A*10000=300,就没有了丢失数据的成分
IQ定标为何要乘以2的几次幂而不是乘以10000或者类似于1后面好多零这样的数据呢?难道是乘以2的几次幂花费的时间比乘以10000所用的时间少?求指导

Tao Li5:

回复 mangui zhang:

没有明白啊

IQmath中有这样一段定义 #define   _IQ16(A)      (long) ((A) * 65536.0L) 假设以2^16为例
个人理解,C2000系列处理器不支持浮点运算,需要将小数部分进行转化,所以有了IQ定标,我没有明白的是,一个小数为何要乘以2^16,而不是像10000这样的数字?
假设A=0.03,A*65536=1966.08,再强制转换成long型,就成了1966,丢失了小数部分,相当于精度变差
但是如果A*10000=300,就没有了丢失数据的成分
IQ定标为何要乘以2的几次幂而不是乘以10000或者类似于1后面好多零这样的数据呢?难道是乘以2的几次幂花费的时间比乘以10000所用的时间少?求指导

Linda:

回复 Tao Li5:

您好!

建议到以下网址下载C2000多天培训资料,其中有关于IQmath与浮点定标对比的详细介绍:

http://processors.wiki.ti.com/index.php/C2000_Multi-Day_Workshop

IQmath中有这样一段定义 #define   _IQ16(A)      (long) ((A) * 65536.0L) 假设以2^16为例
个人理解,C2000系列处理器不支持浮点运算,需要将小数部分进行转化,所以有了IQ定标,我没有明白的是,一个小数为何要乘以2^16,而不是像10000这样的数字?
假设A=0.03,A*65536=1966.08,再强制转换成long型,就成了1966,丢失了小数部分,相当于精度变差
但是如果A*10000=300,就没有了丢失数据的成分
IQ定标为何要乘以2的几次幂而不是乘以10000或者类似于1后面好多零这样的数据呢?难道是乘以2的几次幂花费的时间比乘以10000所用的时间少?求指导

Tao Li5:

回复 Linda:

打不开,显示错误

赞(0)
未经允许不得转载:TI中文支持网 » 关于IQmath中IQ定标的一些疑问
分享到: 更多 (0)