【发布时间】:2014-03-21 13:22:00
【问题描述】:
参考Notation for fixed point representation 我已经尝试关注,但我完全糊涂了。
int q = 1<<15;
printf("(sys3.b0 * q) = %hx \n",((0.2929 * q)));
输出是
((0.2929 * q)) = cc60
我希望看到 257d,因为来自计算器,0.2929 * 32768 in hex = 257d
使用这种 Q.15 格式有什么问题,还是因为打印不正确
编辑
伙计们,其实我从来没有想过。
我的实际代码尝试打印两个值。我认为第二值印刷是问题所在。在@Soren 的cmets 之后,我复制了他的代码并且正在工作。然后我从 printf 中删除了第一个值,我的代码也有效。所以我重新发布了 printf 声明
printf("(sys3.b0 * q) = %X \t((0.2929 * q)) = %X\n",(sys3.b0 * q),(unsigned)((0.2929 * q)));
printf("(sys3.b0 * q) = %X \n",((unsigned)(0.2929 * q)));
第二行是 Seron 建议的。
The value of sys3.b0 = 0.0000000001295
现在输出是
(sys3.b0 * q) = 4DB173CF ((0.2929 * q)) = 3ED1CC60
(sys3.b0 * q) = 257D
【问题讨论】:
标签: c printf signal-processing fixed-point