Q10格式怎么样?

时间:2015-03-16 21:05:45

标签: floating-point integer embedded

我刚刚阅读了其他人的代码,并声称答案是Q10格式。我无法弄清楚Q10的情况如何。这是代码:

// Convert x and y in such a manner that the ratio of x to y would
// produce a value in a Q10 format
cnt = 0;
bitMask = 0x80000000;

while((cnt < 10) && !(bitMask & x))
{
  x <<= 1;
  cnt++;
}
y >>= (10 - cnt);

// Calculate the slope
if (0 == x)
  slope = 0xFFFFFFFF;
else
  slope = ((uint32)x)/(uint32)y;

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

我假设在Q10中你的意思是该值有10位代表固定点值的小数部分。如果xy输入具有相同数量的小数位(即,相同的&#34; Q&#34;值),则问题中的代码将产生Q10值。输入x向左移位最多10位,这使x的Q值增加了移位的位数。如果x移位小于10位(以避免溢出),则y向右移位剩余的位(减小y的Q值),以便Q之间的差异xy的值为10.然后slope计算为x/y。除以定点值时,结果的Q值等于分子的Q值减去分母的Q值。 slope是Q10,因为xy的Q值相差10。