【发布时间】:2010-05-26 15:10:42
【问题描述】:
假设这么多:
我使用的是 16.16 定点系统。
系统是 32 位的。
CPU 没有浮点处理器。
对于任何大于 1.0 * 0.4999 的乘法,溢出是迫在眉睫的
做最后一个假设...假设我正在工作的值不会高到导致此操作溢出...
//assume that in practical application
//this assignment wouldn't be here as 2 fixed values would already exist...
fixed1 = (int)(1.2341 * 65536);
fixed2 = (int)(0.7854 * 65536);
mask1 = fixed1 & 0xFF; //mask off lower 8 bits
fixed1 >>= 8; //keep upper 24 bits... assume value here isn't too large...
answer = (((fixed2 * fixed1) >> 8) + ((fixed2 * mask1) >> 16));
所以问题是......这是天才的一击(不是说它还没有被考虑过或其他任何东西)还是完全浪费时间?
【问题讨论】:
-
好吧,我不明白你在这里要做什么。您是否尝试在没有浮点处理器但所有数字都是固定的 32 位机器上将 1.2341 乘以 0.7854,以便前 16 位是小数点前,后 16 位是小数点后?
标签: fixed-point