假设这么多:
我使用的是 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));
所以问题是......这是天才的一击(并不是说它还没有被想到或任何东西)还是完全浪费时间?